У меня есть рабочая книга Excel 2007 с несколькими диаграммами на одном листе (сложенная столбчатая диаграмма и одна серия в виде (невидимой) линии для итогов). В зависимости от ячейки, выбранной пользователем, столбчатые диаграммы должны иметь соединители или нет.
Для этого у меня есть небольшая процедура VBa, запускаемая событием, Worksheet_Change
которая проходит по диаграммам и устанавливает соединители, используя objChart.SetElement msoElementLineSeriesLine
или objChart.SetElement msoElementLineNone
соответственно.
Это обычно работает в 90% случаев. Однако иногда - на некоторых, различных графиках - objChart.SetElement
приводит к ошибке -2147467259 The specified dimension is not valid for the current chart type.
- и ломает график, поэтому он выглядит так:
Способ исправления этой ошибки после ее возникновения — повторное открытие файла, даже если он был сохранен после возникновения ошибки. Поэтому, похоже, это какая-то проблема с отображением.
решение1
Я думаю, что SetElement msoElementLineSeriesLine не такой надежный, как старый синтаксис ChartGroups(i).HasSeriesLines
msoElementLineSeriesLine, похоже, не понимает группы диаграмм, группы осей и т. д. Возможно, если первая серия, которую он замечает, не является сложенной полосой или столбцом, он подавляется.
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
Забавно, что в обновленном движке диаграмм 2007/2010 гг. все еще была возможность добавлять линии серий в пользовательский интерфейс, но в 2013 г. я не могу ее найти (хотя, как я уже сказал, приведенный выше код работает нормально).