2016-06-08 2 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

그 선택과 활성화는 모두 불필요합니다. 나는 그것이 그것이라고 생각할지라도 왜 그것이 때때로 버그를 일으키는 지 확신 할 수 없다.

시도 : 나는 또한 실수로 차트 시트의 반복을 방지하기 위해 WorksheetsSheets을 변경

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 

.

+0

고마워요! 어떻게 고쳐야할지 모르겠다. – user3623042