
我有一本 Excel 2007 工作簿,在一個工作表上有多個圖表(堆疊長條圖和一個作為總計(不可見)線的系列)。根據使用者選擇的儲存格,長條圖應該有連接器或沒有連接器。
為此,我有一個由Worksheet_Change
循環圖表的事件觸發的小型 VBa 例程,並分別使用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 年找不到它(儘管正如我所說,上面的程式碼工作正常)。