Я хочу добавить несколько быстрых опций к диаграммам в электронной таблице. Я хочу выбрать диаграмму, установить/снять отметку в поле, и код запустится.
Коды флажков:
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