Cada vez que um gráfico dinâmico é atualizado, ele perde sua formatação. Portanto, tenho um código VBA para reformatar o gráfico sempre que as páginas são atualizadas.
Private Sub Worksheet_Calculate()
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
ActiveChart.Deselect
End Sub
O tipo de gráfico é combo e todas as séries temporais são empilhadas, exceto a série temporal chamada "limite". O código acima funciona enquanto a série “Limit” estiver no conjunto de dados. Se o usuário selecionar um filtro ou segmentação de dados que remova a série temporal Limite do conjunto de dados, o Excel gerará um erro.
Preciso tornar o formato opcional.
Tentei testar para ver se a série existe. Mas não está funcionando bem.
Private Sub Worksheet_Calculate()
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
If ActiveChart.FullSeriesCollection("Limit") Is Nothing Then "do nothing here"
Else ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
End If
ActiveChart.Deselect
End Sub
Como posso fazer com que o VBA pule a série "limite" se ela não existe?
Responder1
Uma maneira é simplesmente ignorar os erros. Você pode fazer isso com oEm caso de errodeclaração:
Private Sub Worksheet_Calculate()
On Error GoTo Finish
Dim Nope As Integer
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
ActiveChart.Deselect
Finish:
On Error GoTo 0
End Sub
O On Error GoTo 0
informa para cancelar todo o tratamento de erros e gerenciá-lo normalmente.
Você também pode usar On Error Resume Next
no topo em vez de GoTo Finish
:
Private Sub Worksheet_Calculate()
On Error Resume Next
Dim Nope As Integer
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
ActiveChart.Deselect
End Sub