Tengo un libro de Excel 2007 con varios gráficos en una hoja de trabajo (gráfico de barras apiladas y una serie como línea (invisible) para los totales). Dependiendo de la celda seleccionada por el usuario, los gráficos de barras deben tener conectores o no.
Para esto, tengo una pequeña rutina VBa activada por el Worksheet_Change
evento que recorre los gráficos y configura los conectores usando objChart.SetElement msoElementLineSeriesLine
o objChart.SetElement msoElementLineNone
respectivamente.
Esto generalmente funciona en el 90% de los casos. Sin embargo, a veces, en algunos gráficos que varían, objChart.SetElement
se produce un error -2147467259 The specified dimension is not valid for the current chart type.
- y se rompe el gráfico, por lo que se ve así:
La forma de solucionar este problema después de que se produjo el error es volver a abrir el archivo, incluso si se guardó después de que se produjo el error. Por lo tanto, parece haber algún tipo de problema de visualización.
Respuesta1
Creo que SetElement msoElementLineSeriesLine no es tan sólido como la sintaxis anterior, ChartGroups(i).HasSeriesLines
msoElementLineSeriesLine parece no comprender los grupos de gráficos, grupos de ejes, etc. Quizás si la primera serie que nota no es una barra o columna apilada, se ahoga.
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
Lo curioso es que el rediseño del motor de gráficos de 2007/2010 todavía tenía un medio para agregar líneas de serie en la interfaz de usuario, pero no puedo encontrarlo en 2013 (aunque, como dije, el código anterior funciona bien).