ピボット チャートは更新されるたびに書式が失われます。そのため、ページが更新されるたびにグラフを再フォーマットする VBA コードを用意しました。
Private Sub Worksheet_Calculate()
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
ActiveChart.Deselect
End Sub
グラフの種類はコンボで、「limit」と呼ばれる時系列を除くすべての時系列が積み重ねられます。上記のコードは、データ セットに「Limit」シリーズがある限り機能します。ユーザーがデータ セットから Limit 時系列を削除するフィルターまたはスライサーを選択した場合、Excel はエラーをスローします。
フォーマットをオプションにする必要があります。
シリーズが存在するかどうかテストしてみましたが、うまくいきませんでした。
Private Sub Worksheet_Calculate()
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
If ActiveChart.FullSeriesCollection("Limit") Is Nothing Then "do nothing here"
Else ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
End If
ActiveChart.Deselect
End Sub
「limit」シリーズが存在しない場合に、VBA でそれをスキップするにはどうすればよいでしょうか?
答え1
一つの方法は、エラーを無視することです。エラー時声明:
Private Sub Worksheet_Calculate()
On Error GoTo Finish
Dim Nope As Integer
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
ActiveChart.Deselect
Finish:
On Error GoTo 0
End Sub
On Error GoTo 0
すべてのエラー処理をキャンセルし、通常どおり処理するように指示します。
On Error Resume Next
代わりに上部に を使用することもできますGoTo Finish
:
Private Sub Worksheet_Calculate()
On Error Resume Next
Dim Nope As Integer
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
ActiveChart.Deselect
End Sub