.SetElement‘指定的尺寸对于当前图表类型无效’之后图表损坏。

.SetElement‘指定的尺寸对于当前图表类型无效’之后图表损坏。

我有一个 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 年找不到它(尽管正如我所说,上面的代码运行良好)。

相关内容