我有大约9张不同的纸张,但它们都有4种类型的图表(总计,比较,bydate,趋势)。我正在写VBA以在每张纸上有条件地显示一种类型的图形。例如,如果我想显示总计图形,我希望工作簿中的所有工作表都能更新。我已经可以让图表在一张纸上看不见并且可见,但我想在所有纸张上都这样做。这是我现在的代码:
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
但没有运气。我不想手动将所有工作表名称键入数组,因为我将来可能会添加更多工作表,并且不想继续更改代码。如何遍历所有工作表并将名为“Totals”的图形设置为隐藏?或者我可以将名为“Totals”的工作簿中的所有图形设置为不可见而不通过工作表循环?谢谢!
答案 0 :(得分:3)
您可以传入一个参数,确定每次应该显示哪个图形。然后,当您选择图表类型时,您可以调用该函数一次,传入所选的图表类型,并在所有工作表上打开该图表,关闭所有其他图表。
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