プロが教えるわが家の防犯対策術!

エクセルにてグラフの線の色を変えるマクロを記録し
そのまま実行するとエラーになります。
(Lineメソッドは失敗しました)

どこを変更すれば上手くいきますでしょうか。

'------------------------記録したマクロ

ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(192, 0, 0)
.Transparency = 0
End With

環境
Windows 7
Office 2010

「エクセルマクロのグラフ操作」の質問画像

A 回答 (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 に格納されたオブジェクトのプロパティの内容を見る事もできます。
    • good
    • 0
この回答へのお礼

とても詳しく教えていただき感謝いたします。
大変、勉強になりました、ありがとうございました。

お礼日時:2012/08/02 08:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!