VBA Excel 2010 – select图表图例时运行代码
目前我正在尝试做什么,我不知道这是甚至可能的,我甚至不知道从哪里开始(我试过这个代码,但我无法得到它甚至工作)。
我试图让一个macros自动运行,当点击一个图表的传说,我知道你可以分配一个macros图表来运行它们,但如果可能的话,我想这样做从图表的传说。 我想运行的代码如下,这是一个简单的开关打开/closures图表线
If ActiveChart.SeriesCollection(1).Format.Line.Visible = msoTrue Then ActiveChart.SeriesCollection(1).Format.Line.Visible = msoFalse ElseIf ActiveChart.SeriesCollection(1).Format.Line.Visible = msoFalse Then ActiveChart.SeriesCollection(1).Format.Line.Visible = msoTrue End If
如果这是不可能的,我可以诚实地看到为什么,但如果有什么想法可以变得更好
编辑:
我在这里想要做的一个小错误,对不起,我希望单击图例条目时运行的代码,这是彩色线旁边图例的文本部分(所以图表行1,图表行1等等),希望能够澄清它
这假定,您有embedded的图表对象作为第一个工作表中的第一个图表对象。
我在Sheet1中有以下内容:
创build一个类模块。 将其命名为clsChartEvents
。 在那个类模块中放置下面的代码:
Public WithEvents myChart As Chart Private Sub myChart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long) Dim ElementID As Long, Arg1 As Long, Arg2 As Long With myChart .GetChartElement x, y, ElementID, Arg1, Arg2 If ElementID = xlLegendEntry Then If .SeriesCollection(Arg1).Format.Line.Visible = msoTrue Then .SeriesCollection(Arg1).Format.Line.Visible = msoFalse ElseIf .SeriesCollection(Arg1).Format.Line.Visible = msoFalse Then .SeriesCollection(Arg1).Format.Line.Visible = msoTrue End If .ClearToMatchStyle End If End With End Sub
.GetChartElement x, y, ElementID, Arg1, Arg2
Arg2
从鼠标单击位置x,y 获取 ElementID
, Arg1
和Arg2
。
在默认模块中input以下代码:
Dim myChartWithEvents As clsChartEvents Sub init() Set myChartWithEvents = New clsChartEvents Set oChart = ThisWorkbook.Worksheets(1).ChartObjects(1).Chart Set myChartWithEvents.myChart = oChart End Sub
现在运行sub init
并单击图例条目。
点击图例条目应该打开/closures相应的线路。
作为一个简单的解决方法,您可以在图例上绘制矩形。 你可以格式化那个没有内部和没有线条的矩形使它不可见,甚至可以组合图表和矩形,以便两者可以一起移动。
然后你可以把那个矩形连接到你的macros。 在你的macros中,你不能使用“ActiveChart”,但必须用名称或ID标识正确的图表。 希望这可以帮助。