- ベストアンサー
エクセルマクロのグラフ操作でエラーが発生する問題の解決方法
- エクセルにてグラフの線の色を変えるマクロを記録し、そのまま実行するとエラーになってしまいます。具体的には、Lineメソッドが失敗しました。
- このエラーを解消するために、マクロのコード内の何箇所かを変更する必要があります。
- 具体的な変更箇所は、グラフの線の色を変えるためのコード部分です。Format.LineのForeColor.RGBの値を適切に変更することで、エラーが発生しないようになります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
.Legend.LegendEntries(1) とは、『凡例』の1番めの凡例文字です。 これを選択して右クリック、ミニツールバーから「図形の枠線」を使って色を変えると 提示されたマクロが確かに記録されます。 ですが、 凡例1選択後右クリックして「データ系列の書式設定」から「線の色」を変更してみてください。 マクロ記録は ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.Legend.Select ActiveChart.Legend.LegendEntries(1).Select ActiveChart.SeriesCollection(1).Select With Selection.Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(192, 0, 0) .Transparency = 0 End With このように記録されるはずです。 >ActiveChart.Legend.LegendEntries(1).Select の後に記録されている SeriesCollection(1) というのが『系列1』の事です。 グラフの線の色を変えるには、この系列1の.Format.Line.ForeColor.RGB を変更する操作が必要です。 マクロ記録は便利な機能ですが、パーフェクトに機能しているわけではないです。 特に図形を扱う時は、『Selection』は暗黙のうちに処理され、記録されない事も少なくありません。 記録マクロを参考に、ヘルプも駆使してコードを整理する事が必要です。 時に、目的の操作にはSelectionは必ずしも必要というわけではありません。 ActiveSheet.ChartObjects("グラフ 1").Chart.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(192, 0, 0) このように、親オブジェクトから順に階層を辿ってきちんと指定してあげればSelect不要です。 また、マクロを組む時に操作対象が何なのか調べてみると理解が深まると思います。 対象をSelectしてみて、 Sub test() Dim o As Object Set o = Selection Stop End Sub このマクロを実行すると『Stop』行でマクロが一時停止します。 VisualBasicEditor画面で[Alt][v][s]の順押しで[ローカルウィンドウ]が表示されます。 変数 o が何の型なのか、『型』フィールドに表示されます。 例)Object/Series これを元にヘルプを使って、そのオブジェクトが持っているプロパティやメソッドを調べたりする事ができます。 また、変数 o の左 田マークをクリックする事で o に格納されたオブジェクトのプロパティの内容を見る事もできます。
お礼
とても詳しく教えていただき感謝いたします。 大変、勉強になりました、ありがとうございました。