Gráfico corrompido após .SetElement 'A dimensão especificada não é válida para o tipo de gráfico atual.'

Gráfico corrompido após .SetElement 'A dimensão especificada não é válida para o tipo de gráfico atual.'

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_Changeevento que faz um loop nos gráficos e define os conectores usando objChart.SetElement msoElementLineSeriesLineou objChart.SetElement msoElementLineNonerespectivamente.

Isso geralmente funciona em 90% dos casos. No entanto, às vezes - em alguns gráficos variados, objChart.SetElementresulta em um erro -2147467259 The specified dimension is not valid for the current chart type.- e quebra o gráfico, ficando assim:

Exemplo de gráfico corrompido

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).

informação relacionada