2017-03-03 14 views
0

Sheet1の値を使用して、別のシート(Sheet2)のグラフの最大スケールと最小スケールを更新しようとしています。しかし、私はオブジェクトが必要なエラーを取得しています。Excel VBA - グラフの参照が機能しない

Sub ChangeAxisScale() 
Dim wsChart As Chart 
Dim wsInput As Worksheet 
Dim LastRow As Long 


Set wsInput = ThisWorkbook.Sheets("Sheet1") 

With Sheet2.ChartObjects("Chart").Chart.Axes(xlValue) 
     LastRow = wsInput.Cells(wsInput.Rows.Count, "D").End(xlUp).Row 
     .MaximumScale = wsInput.Cells(LastRow, 4).Value 
     .MinimumScale = wsInput.Range("D2").Value 
End With 
End Sub 

ラインエラーがWith Sheet2.ChartObjects("Chart").Chart.Axes(xlValue)で登場:以下のコードです。私は間違ってチャートを参照していましたか?

ありがとうございます。

答えて

0

の名前が "Sheet2"のシートにチャートがある場合、コードは正常に動作します。チャートが異なる名前のシートにある場合、コードは失敗します。

Dimステートメントを使用して、チャートが存在するシートを宣言して適切に設定できます。

Sub ChangeAxisScale() 
Dim wsChart As Chart ' you don't really need that, right? 
Dim wsInput As Worksheet, wsChartSheet As Worksheet 
Dim LastRow As Long 


Set wsInput = ThisWorkbook.Sheets("Sheet1") 
Set wsChartSheet = ThisWorkbook.Sheets("Sheet2") 

With wsChartSheet.ChartObjects("Chart").Chart.Axes(xlValue) 
     LastRow = wsInput.Cells(wsInput.Rows.Count, "D").End(xlUp).Row 
     .MaximumScale = wsInput.Cells(LastRow, 4).Value 
     .MinimumScale = wsInput.Range("D2").Value 
End With 
End Sub 
関連する問題