アプリ版:「スタンプのみでお礼する」機能のリリースについて

グラフオブジェクト内の線を全部指定して、
一括でプロパティをを変更する方法ってありますか?

イメージとして、色の変更だと、こんな感じで簡潔に指示したいです。
Chart.Shapes.Lines.ForeColor.SchemeColor = 10

線の数(Shapes.Count)に依存しない書き方を教えてください。

A 回答 (2件)

オブジェクトが別だから、結局誰かが個別に設定する


必要があります。それを一つの関数としてまとめる
事になりますから、結局、やっていることに利点は
ほとんどありません。線の数だけ設定するようなコード
を書いたところで5~6行ですから労力の削減にも
つながりません。

現実に結び付けてメリットが少なくリスクが多いので
用意されていないと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。できないとわかれば、そればそれで前進です。

お礼日時:2011/07/17 23:09

>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は不可のようです。
    • good
    • 0
この回答へのお礼

ありがとうございます。できないとわかれば、そればそれで前進です。

お礼日時:2011/07/17 23:10

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