Eu tenho uma pasta de trabalho do Excel 2007 com vários gráficos em uma planilha (gráfico de barras empilhadas e uma série como linha (invisível) para os totais). Dependendo da célula selecionada pelo usuário, os gráficos de barras deverão possuir conectores ou não.
Para isso, tenho uma pequena rotina VBa acionada pelo Worksheet_Change
evento que faz um loop nos gráficos e define os conectores usando objChart.SetElement msoElementLineSeriesLine
ou objChart.SetElement msoElementLineNone
respectivamente.
Isso geralmente funciona em 90% dos casos. No entanto, às vezes - em alguns gráficos variados, objChart.SetElement
resulta em um erro -2147467259 The specified dimension is not valid for the current chart type.
- e quebra o gráfico, ficando assim:
A maneira de corrigir isso após a ocorrência do erro é reabrir o arquivo - mesmo que tenha sido salvo após a ocorrência do erro. Portanto, parece haver algum tipo de problema de exibição.
Responder1
Acho que SetElement msoElementLineSeriesLine não é tão robusto quanto a sintaxe antiga, ChartGroups(i).HasSeriesLines
msoElementLineSeriesLine parece não entender grupos de gráficos, grupos de eixos e assim por diante. Talvez se a primeira série que ele percebe não for uma barra ou coluna empilhada, ele engasgue.
Sub AddSeriesLines()
Dim cg As ChartGroup
For Each cg In ActiveChart.ChartGroups
Select Case cg.SeriesCollection(1).ChartType
Case xlColumnStacked, xlColumnStacked100, xlBarStacked, xlBarStacked100
cg.HasSeriesLines = True ' False to remove
End Select
Next
End Sub
O engraçado é que o redesenho do mecanismo gráfico de 2007/2010 ainda tinha um meio de adicionar linhas de série na interface do usuário, mas não consigo encontrá-lo em 2013 (embora, como eu disse, o código acima funcione bem).