我正在探索 excel 中的 VBA,想知道如何从我的堆积柱形图中获取系列和点名称。如果您有一个堆积柱形图,您可以将鼠标悬停在任何列上,excel 会向您显示一个小文本框,其中包含“系列“<series-name>”点“<point-name>”值:##”。
我希望能够单击或悬停在图表中的任意列上并执行 VBA 代码来查找系列和点名称。对我来说最具挑战性的任务是通过悬停或鼠标单击来触发 VBA 脚本并识别活动图表中的活动部分。
任何帮助是极大的赞赏!
答案1
这不是一个容易回答的任务,因为您无法在单击情节元素时触发宏运行。
VB 通常被设置为创建图表,而不是读取图表。
代码如:
Sub macro()
If TypeName(Selection) = "Series" Then
Set ch = ActiveChart.SeriesCollection
For I = 1 To ch.Count
If ch(I).Name = Selection.Name Then MsgBox "Series is " & Selection.Name
Next I
End If
End Sub
从http://www.vbaexpress.com/forum/showthread.php?43451-Chart-Series-Selected-Index将为您提供所选系列的名称。您需要设置热键或按钮来运行它。我还没有看到与单个点类似的代码。
但是你确定需要用 VB 来完成这个任务吗?
答案2
至于如何运行 vba:您实际上在图表本身中创建一个 chart_mousemove 事件(进入图表后,在宏/vba 编辑器 (alt-F11) 中打开图表页面),然后每次将鼠标移到图表上时,它都会运行。这就像在 Windows 窗体中使用事件一样,如果您曾经这样做过的话。
请参阅此页面了解更多详情http://www.databison.com/interactive-chart-in-vba-using-mouse-move-event/