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

1

Eu tenho uma pasta de trabalho do Excel 2007 com vários Gráficos em uma planilha (gráfico de barras empilhados e uma série como linha (invisível) para os totais). Dependendo de uma célula selecionada pelo usuário, os gráficos de barras devem ter conectores ou não.

Para isso, tenho uma pequena rotina VBa acionada pelo evento Worksheet_Change 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, por isso parece:

A maneira como a correção após o erro ocorreu é reabrir o arquivo - mesmo se salvo depois que o erro ocorreu. Portanto, parece ser algum tipo de problema de exibição.

    
por Peter Albert 10.01.2013 / 10:18

1 resposta

1

Acho que o mElementElementLineSeriesLine do SetElement não é tão robusto quanto a sintaxe antiga, ChartGroups (i) .HasSeriesLines

O msoElementLineSeriesLine parece não entender grupos de gráficos, grupos de eixos e assim por diante. Talvez, se a primeira série que notou não for uma barra ou coluna empilhada, ela sufoque.

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

Engraçado, o redesenho do motor de 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). / p>     

por 28.01.2013 / 17:58