我为Excel模板编写了一个宏。 宏必须在所有工作表上运行并更改每个图表的来源(每个工作表具有相同的模板,只有一个图表)。 当我运行以下代码时它工作正常,但是当有很多工作表(50或更多)时,它不会在标题中获得异常。它之前没有发生在纸张上,它确实改变了来源。
以下是代码:
For Each ws In Sheets
If ws.ChartObjects.Count > 0 Then
If ws.Cells(1, "I").Value <> 1 Then
ws.ChartObjects("Chart 1").Activate
ws.Activate
ActiveChart.SetSourceData Source:=ws.Range("A17:B20")
ws.Cells(1, "I").Value = 1
ActiveCell.Select
End If
End If
Next
我尝试过激活ws并使用Activesheet 我也试过像这样使用:
Dim rng as Range
With ws
rng = .Range("A17:B20")
End With
到目前为止没有运气。
答案 0 :(得分:2)
所有这些选择和激活都是非常不必要的。我不确定为什么它会偶尔触发那个bug,尽管我认为它确实存在。
尝试:
For Each ws In Worksheets
If ws.ChartObjects.Count > 0 Then
If ws.Cells(1, "I").Value <> 1 Then
ws.ChartObjects("Chart 1").Chart.SetSourceData Source:=ws.Range("A17:B20")
ws.Cells(1, "I").Value = 1
End If
End If
Next
我还将Sheets
更改为Worksheets
,以防止意外迭代图表。