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