VBA を使用して、Excel 2003 のグラフから空の系列を削除しようとしています。過去に他の人がこの問題を抱えていたことを知り、投稿に記載されているすべての方法を試しましたが、一貫して機能するものを見つけることができませんでした.
チャートには 14 個のシリーズがあり、そのうち 3 個から 9 個までは空にすることができます。空のものは常にシリーズ 4 ~ 12 の間にあります。
私はコードのいくつかのバリエーションを試しましたが、これは主にそれです:
Sheets("chart-1").Select
ActiveChart.PlotArea.Select
For i = 12 To 4 Step -1
Dim theSeries As Series
MsgBox (ActiveChart.SeriesCollection(i).Name)
Set theSeries = ActiveChart.SeriesCollection(i)
MsgBox (theSeries.Name)
theSeries.Delete
Next
チャートに対して 1 回は正常に実行できますが、その後のサイクルはすべてUnable to get the Name property of the Series class
エラーで失敗します。.Name の呼び出しで失敗します。
整数を直接挿入することで動作させることができましたが、1 を除くすべての整数に対して 1 回しか実行されませんSeries(1)
。
たとえば、単に ActiveChart.SeriesCollection(1).Delete を呼び出すと、シリーズは削除されますが、別の整数 (4、9、12) で実行すると実行されません。1 に対して再び機能しますが、1 のみです。他の整数 (4 など) でも 1 回は機能しますが、整数を 1 に変更したり、4 のままにしたり、他の整数に変更したりしても、後続の呼び出しはすべて失敗します。番号。
その振る舞いは実に奇妙です。
どんなアイデアでも大歓迎です。ActiveChart.SeriesCollection(1).Delete
最初の 3 つのシリーズは常に空ではないため、単純に繰り返し呼び出すことはできません。
ありがとう。
** アップデート **
以下を手動で実行してテストを実行しました。
Sheets("ch-v2-12mth").Select
ActiveChart.PlotArea.Select
MsgBox (ActiveChart.SeriesCollection(1).Name)
結果を確認するために、1 ~ 16 の数字 (グラフには 14 個のシリーズしかありません) を試して SeriesCollection を循環させました。1 - 3 は正常に動作しました 4 - 13 はUnable to get the Name property of the Series class
14 で正常に動作しました 15 - 16 でエラーが発生しましたMethod 'SeriesCollection' of object '_Chart' failed
<- チャート内のシリーズの数を考えると驚くことではありません。
この種の動作は、Excel にバグがあると思わせます。他のアイデアはありますか?