選択したチャートでマクロを実行する

選択したチャートでマクロを実行する

スプレッドシートのグラフにいくつかの簡単なオプションを追加し、グラフを選択してチェックボックスを選択/選択解除するとコードが実行されるようにします。

チェックボックスコードは次のとおりです。

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

関連情報