スプレッドシートのグラフにいくつかの簡単なオプションを追加し、グラフを選択してチェックボックスを選択/選択解除するとコードが実行されるようにします。
チェックボックスコードは次のとおりです。
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
DisplayLabels
Else
HideLabels
End If
End Sub
DisplayLabelsとHideLabelsのコードは
Sub DisplayLabels()
With ActiveChart
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).ApplyDataLabels
End With
End Sub
Sub HideLabels()
With ActiveChart
ActiveSheet.ChartObjects("Basic_Chart").Activate
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).DataLabels.Select
Selection.ShowValue = False
End With
End Sub
問題は、ボックスにチェックを入れるとチャートが選択/アクティブではなくなり、コードが機能しなくなることです。これを回避する方法はありますか。複数のシートで再利用可能なコードにしたいので、チャートを直接参照することはできません。
答え1
チェックボックスは忘れて、マクロでラベルの有無を判断します。次のコードは、グラフが選択されているかどうかを確認し、選択されている場合はラベルを切り替えます。
If ActiveChart Is Nothing Then
MsgBox "You must select a chart"
Exit Sub
End If
For Each mySeries In ActiveChart.SeriesCollection
On Error Resume Next
mySeries.DataLabels.Select
If (Err.Number = 0) Then
mySeries.DataLabels.Delete
Else
mySeries.ApplyDataLabels
End If
On Error GoTo 0
Next mySeries