VBA在多张不可见的Excel中设置图表

我有大约9张不同的图表,但是他们都有4种types的图表(总计,比较,更新,趋势)。 我正在写VBA,在每张纸上有条件地显示一种types的图表。 例如,如果我想显示总计图表,我想要更新工作簿中的所有工作表。 我已经可以使图表在一张纸上不可见和可见,但我想在所有纸张上这样做。 这是我的代码现在:

Sub UpdateGraph() Sheets(".graphManager").ChartObjects("Totals").Visible = False End Sub 

我希望能够在所有表格上做到这一点,所以我尝试了这样的事情:

 Sub UpdateGraph() Dim ws As Worksheet For Each ws In Sheets If ws.Visible Then ws.Select (False) ActiveWorksheet.ChartObjects("Totals").Visible = False Next End Sub 

但没有运气。 我不想手动input所有的表格名称到一个数组中,因为我可能会在将来添加更多的表格而不想更改代码。 我怎样才能遍历所有表,并设置一个名为“总计”的graphics隐形? 或者,我是否可以将名为“总计”的工作簿中的所有图表设置为不可见,而无需在表单中循环? 谢谢!

您可以传入一个参数,以确定每次应显示哪个graphics。 然后在selectgraphicstypes的时候,可以调用一次函数,传入选定的graphicstypes,然后将所有图表打开,closures所有graphics。

 Sub UpdateGraph(graphType As String) Dim ws As Worksheet For Each ws In Sheets For Each co In ws.ChartObjects '''Turn off all charts on the sheet first''' ws.ChartObjects(co.Name).Visible = False Next '''Turn on the one chart type we want''' ws.ChartObjects(graphType).Visible = True Next End Sub