簡體   English   中英

Excel宏:對象_worksheet的方法范圍失敗

[英]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

我也改變SheetsWorksheets ,以防止過度的圖表片偶然迭代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM