Execute a macro no gráfico selecionado

Execute a macro no gráfico selecionado

Quero adicionar algumas opções rápidas aos gráficos em uma planilha, quero selecionar um gráfico, marcar/desmarcar uma caixa de seleção e o código é executado.

Os códigos da caixa de seleção são;

Private Sub CheckBox1_Click()

    If CheckBox1.Value = True Then
        DisplayLabels    
    Else    
        HideLabels   
    End If

End Sub

O código DisplayLabels e 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

O problema é que, depois de marcar a caixa, o gráfico não está mais selecionado/ativo e, portanto, o código não funciona. Existe uma maneira de contornar isso. Quero que este seja um código reutilizável em várias planilhas, para que não possa fazer referência direta a um gráfico.

Responder1

Esqueça a caixa de seleção, faça com que a macro determine se os rótulos ou não. O seguinte irá verificar se um gráfico está selecionado e, se sim, alternar os rótulos:

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

informação relacionada