2016-06-08 63 views
1

我已經爲Excel模板寫了一個宏。 宏必須在所有工作表上運行並更改每個圖表的來源(每個工作表具有相同的模板和只有一個圖表)。 當我運行下面的代碼時,它可以正常工作,但是當有很多工作表(50或更多)時,它不會在標題中出現異常。它之前沒有發生在紙上,它確實改變了來源。Excel宏:對象_工作表的方法範圍失敗

下面的代碼:

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

你看過這個錯誤信息的許多其他問題和答案嗎? http://stackoverflow.com/search?q=method+Range+of+object+_worksheet – nekomatic

回答

2

所有選擇和激活都是不必要的。我不確定它爲什麼會偶爾觸發這個錯誤,但我認爲它確實如此。

嘗試:

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謹防在圖表片偶然迭代。

+0

謝謝!我不知道它是如何修復它的 – user3623042

相關問題