- 締切済み
EXCEL VBA : グラフ内の線を全指定
グラフオブジェクト内の線を全部指定して、 一括でプロパティをを変更する方法ってありますか? イメージとして、色の変更だと、こんな感じで簡潔に指示したいです。 Chart.Shapes.Lines.ForeColor.SchemeColor = 10 線の数(Shapes.Count)に依存しない書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
>Chart.Shapes.Lines.ForeColor.SchemeColor = 10を見ると相当VBAを勉強しているのかも知れない ーー しかし質問の>グラフオブジェクト内の線、とは何ですか。 オブジェクトの直線を引く(追加)人も居るかもしれない。 見た目で線に見えるのは、折線グラフの線、棒ラフの「枠線」や軸も線と言えないことも無い。 目盛線、補助目盛り線なども線でしょう。プロットエリアの輪郭線なども線の扱いだろう。 質問にはグラフの種類さえも書いてない。それ(種類)を超えた識別があるかもしれないと思っているのかな。 それをまず明確にしてください。 ーー 質問のようなことを言うなら、グラフの場合はややこしいと思うが、オブジェクトの階層関係で考えないといけないでしょう。 その中でコレクションになっていて、(共通)プロパティに色(カラー)が設けられているようなもののことかなと思う。 そういうのは私のレベルでは1つ1つ調べて試行するほか無い。開発者用のヘルプなどを使いこなせる人はそういうのを利用して手数を省くかもしれない。 ーー Sub Macro4() ActiveChart.SeriesCollection(3).Select With Selection.Border .ColorIndex = 3 .Weight = xlThick .LineStyle = xlDot End With End Sub のように系列の場合はドレも同じ色にするニーズそのものが使い道が無い。 Sub Macro5() For i = 1 To 3 ActiveChart.SeriesCollection(i).Select With Selection.Border .ColorIndex = 3 .Weight = xlThick .LineStyle = xlDot End With Next i End Sub のように繰り回しをしないと出来ないので、新味(コード行省略)は無い。 ーーー 質問の例も、少し変えて 3つの異種の図形をシートに貼り付けて、線の色を同じ色に変えたい場合、 Sub Macro1() For i = 1 To 3 ActiveSheet.Shapes(i).Select Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 Next i End Sub のようにしないと、うまくいかなかったが、これより良い方法はありますか。 ーー Sub Macro2() ActiveSheet.DrawingObjects.ShapeRange.Line.ForeColor.SchemeColor = 10 End Sub というオブジェクトを使うと、1行で3つの図形の線が赤色になった。 こういうオブジェクトを探すことになるが、DrawingObjectsも古く、グラフの場合は良いものが無いのでは。 グラフに対しDrawingObjectsは不可のようです。
- MARU4812
- ベストアンサー率43% (196/452)
オブジェクトが別だから、結局誰かが個別に設定する 必要があります。それを一つの関数としてまとめる 事になりますから、結局、やっていることに利点は ほとんどありません。線の数だけ設定するようなコード を書いたところで5~6行ですから労力の削減にも つながりません。 現実に結び付けてメリットが少なくリスクが多いので 用意されていないと思います。
お礼
ありがとうございます。できないとわかれば、そればそれで前進です。
お礼
ありがとうございます。できないとわかれば、そればそれで前進です。