使用excelmacros/ vba打开/closures图表系列的可见性

我正在Excel中制作一个线形图(图表),将几个数据系列绘制到同一个图表上。

我需要创build一个macros/ VBA的解决scheme,可以通过按下button(或checkbox等)来打开/closures这些系列的可见性,

与此图片类似(通过Excel菜单系统手动完成)

在这里输入图像说明

我试图通过所有的成员variables/方法

https://msdn.microsoft.com/EN-US/library/office/ff837379.aspx

但没有太多的运气。

我曾试着玩过类似的东西

Charts("Chart1").SeriesCollection(1) 

 Worksheets("Graphical Data").ChartObjects(1) 

但我既不能得到图表对象(我得到一个下标超出范围的错误),也不能find任何方法,让我打开/closures个人系列的知名度。

有任何想法吗?

我相信你正在寻找的属性是SeriesCollection.Format.Line.Visible属性。 我很快创build了一个Excel工作簿,并添加了一个简单的数据集(只是1-10),并在工作表Sheet1中添加了一个折线图“Chart 2”。

这段代码closures了该行的可见性:

 Option Explicit Private Sub Test() Dim cht As Chart Dim ser As Series 'Retrieve our chart and seriescollection objects' Set cht = Worksheets("Sheet1").ChartObjects("Chart 2").Chart Set ser = cht.SeriesCollection(1) 'Set the first series line to be hidden' With ser.Format.Line .Visible = msoFalse End With End Sub 

同样,将ser.Format.Line.Visible属性设置为msoTrue使得该行再次可见。

至于检索图表本身,我必须先激活它,然后将我的chtvariables设置为ActiveChart。 要查看图表的名称,请select它并查看名称框(在input单元格值/公式的位置附近)。

更新

使用上述方法时,系列名称将保留在图例框中。 我无法在图例中findSeriesCollection的可见性属性,但是一种解决方法是简单地将该系列重命名为空string(这会使系列从图例中消失),然后在想要重命名该系列时展示下。

下面的代码将切换图例中的行和系列名称的可见性。

 Option Explicit Private Sub Test() Dim cht As Chart Dim ser As Series 'Retrieve our chart and seriescollection objects' Set cht = Worksheets("Sheet1").ChartObjects("Chart 1").Chart Set ser = cht.SeriesCollection(1) 'Set the first series line to be hidden' With ser.Format.Line If .Visible = msoTrue Then .Visible = msoFalse ser.Name = vbNullString Else .Visible = msoTrue ser.Name = "Series 1" End If End With End Sub 

而且,无论什么时候使用.Format.Line.Visible = msoTrue只要记住将ser.Name设置回你系列的名字。

每当我不知道如何做这样的事情,我打开macroslogging器。

我有一个有四个系列的图表,我使用Excel 2013中的过滤function来隐藏和显示第二个系列,而macroslogging器正在运行。

以下是相关的代码:

 ActiveChart.FullSeriesCollection(2).IsFiltered = True ' series 2 is now hidden ActiveChart.FullSeriesCollection(2).IsFiltered = False ' series 2 is now visible 

系列types(行或列)并不重要,这对任何一个都适用。

有一个简单的方法来打开和closures系列的可见性:在源数据上使用filter。 愿它帮助你如下。 你可以插入一个新的窗口。 Setone他们来源数据表和另一个窗口Chart图表。 然后安排两个窗口同时看到两个。 现在,如果您同时在源数据表中过滤您喜欢的系列,您将在另一个表格中看到您所需的系列。