我正在Excel中制作一个折线图(图表),其中几个数据系列被绘制到同一图表上。
我需要创建一个宏/VBA的解决方案,可以打开/关闭这些系列的visibilty通过按下一个按钮(或勾选框等)
类似于这张图片(通过Excel菜单系统手动完成)
我试着查看了所有成员变量/方法
https://msdn.microsoft.com/EN-US/library/office/ff837379.aspx
但运气不太好
我试过用一些类似于
Charts("Chart1").SeriesCollection(1)
和
Worksheets("Graphical Data").ChartObjects(1)
但是我既不能得到图表对象(我得到一个下标超出范围的错误),也不能找到任何方法,可以让我打开/关闭个别系列的可见性。
有什么想法?
4条答案
按热度按时间neskvpey1#
每当我不知道如何做这样的事情,我打开宏记录器。
我有一个有四个系列的图表,我使用Excel 2013中的过滤器功能来隐藏和显示第二个系列,而宏记录器正在运行。
下面是相关代码:
序列类型(行或列)无关紧要,这适用于任何类型。
lpwwtiir2#
我相信你正在寻找的属性是
SeriesCollection.Format.Line.Visible
属性。我很快创建了一个Excel工作簿,并添加了一个简单的数据集(只是1-10),并添加了一个线图“图表2”到工作表Sheet 1。以下代码关闭了该行的可见性:
同样地,将
ser.Format.Line.Visible
属性设置为msoTrue
会使该行再次可见。至于检索图表本身,我必须首先激活它,然后将我的
cht
变量设置为ActiveChart。要查看图表的名称,请选择它并查看名称框(靠近输入单元格值/公式的位置)。更新
使用上述方法时,系列名称仍保留在图例框中。我在图例中找不到
SeriesCollection
的可见性属性,但是一种解决方法是简单地将系列重新命名为空字符串(这将使系列从图例中消失),然后在您想要显示时重命名系列。下面的代码将在图例中切换线和系列名称的可见性。
而且,每当您使用
.Format.Line.Visible = msoTrue
时,请记住将ser.Name
设置回您的系列名称。pdtvr36n3#
有一个简单的方法来打开和关闭系列的可见性:在源数据上使用筛选器。它可以帮助你很容易如下。可以插入新窗口。将其中一个窗口设置为源数据表,另一个窗口设置为图表表。然后将两个窗口排列成同时看到两者。现在,如果您同时在源数据表上筛选您喜欢的系列,您将在另一个表上看到您想要的系列。
ee7vknir4#
打开/关闭系列可见性的答案已经给出了,但是,如果您想对类别(下面的绿色方框)实现相同的功能
解决方案类似但略有不同:
Sheets("Sheet1").ChartObjects("Chart1").Chart.ChartGroups(1).FullCategoryCollection(2).IsFiltered = True
因此,此代码将隐藏第二个类别(例如堆叠条形图中的第二条)。