1 つのワークシートに複数のグラフ (積み上げ棒グラフと、合計を表す (非表示の) 線としての 1 つの系列) を含む Excel 2007 ワークブックがあります。ユーザーが選択したセルに応じて、棒グラフにコネクタが付くかどうかが決まります。
Worksheet_Change
このため、私は、チャートをループし、それぞれまたはを使用してコネクタを設定するイベントobjChart.SetElement msoElementLineSeriesLine
によってトリガーされる小さな VBa ルーチンを用意しています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 ではそれを見つけることができません (ただし、前述したように、上記のコードは正常に動作します)。