[英]Excel macro: method range of object _worksheet failed
我已經為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,也試過使用With,如下所示:
Dim rng as Range
With ws
rng = .Range("A17:B20")
End With
到目前為止沒有運氣。
所有這些選擇和激活都是非常不必要的。 我不確定為什么有時會觸發該錯誤,盡管我認為確實如此。
嘗試:
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
,以防止過度的圖表片偶然迭代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.