1

У меня есть книга 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 ответ1

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 году (хотя, как я уже сказал, приведенный выше код работает нормально).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .