VBAにて等高線グラフの線の色を変更するための方法がうまくいかずに困ってます。
マクロで作成した「ワイヤーフレーム等高線グラフ」に対して、線の色を大きい順に1つ1つ違う色を付けようとしております。
他の質問やサイトを参考に下記のとおり組んでみました。
ActiveSheet.ChartObjects("等高線図").Activate
with ActiveChart.Legend
.Select
.Font.Size = 14
.LegendEntries(1).LegendKey.Interior.Color = RGB(165, 0, 33)
.LegendEntries(2).LegendKey.Interior.Color = RGB(204, 0, 0)
.LegendEntries(3).LegendKey.Interior.Color = RGB(255, 0, 0)
.LegendEntries(4).LegendKey.Interior.Color = RGB(255, 102, 0)
.LegendEntries(5).LegendKey.Interior.Color = RGB(255, 153, 51)
.LegendEntries(6).LegendKey.Interior.Color = RGB(255, 204, 0)
.LegendEntries(7).LegendKey.Interior.Color = RGB(204, 204, 0)
.LegendEntries(8).LegendKey.Interior.Color = RGB(153, 204, 0)
.LegendEntries(9).LegendKey.Interior.Color = RGB(51, 204, 51)
.LegendEntries(10).LegendKey.Interior.Color = RGB(0, 204, 153)
end with
凡例項目数は結果によって変わるため、10個未満も10個以上もありえます。
10個以上であれば、それ以降は10番目の色(RGB(0, 204, 153))を使いたいです。
上記を実行すると、エラーは出ませんが、等高線の色も変わりません。
同時に変更している文字サイズは正常に反映されます。
どうか宜しくお願いします。
No.6ベストアンサー
- 回答日時:
ANo3です
>しかしながら、等高線の色は変わってくれませんでした。
調べようと思ったら、ANo5様がすでに回答なさっていましたね。
ANo3は面で表示するグラフを想定していたので、塗色を変更する処理にしていました。
補足でご提示のグラフは線構成のグラフですね。その場合は、
ANo3の
L.Item(i).LegendKey.Format.Fill.ForeColor.RGB = Color(index)
↓ ↓
L.Item(i).LegendKey.Format.Line.ForeColor.RGB = Color(index)
でいけるはずと思います。
ついでながら、
>LegendEntries(i).Select』を追加したりと試したりしたのですが~
大抵の処理は、SelectやActivateなどを用いずに記述することが可能です。
上記の記述を用いると、処理が遅くなったり、画面がチラついたりする原因となるので、やむを得ない場合を除き、極力排除する考えの方がよろしいように思います。
無事に理想通りの実行をすることができました。
幾度と確認や回答をいただきありがとうございました。
自分では解決できなかったと思いますし、大変感謝しております。
このたびはありがとうございました。
コードを使わせて頂いたという点からベストアンサーとさせて頂きます。
*どうやら凡例項目を数値の小さいほうから順に処理が行われる仕様のようでしたので、下記のとおり一部を改変して使わせて頂きました。
Dim ii As Long
ii = 0
For i = L.Count To 1 Step -1
ii = ii + 1
index = lb + ii - 1
If index > ub Then index = ub
L.Item(i).LegendKey.Format.Line.ForeColor.RGB = Color(index)
Next i
No.5
- 回答日時:
グラフの線の色を変えるには、系列の.Format.Line.ForeColor.RGB を変更する操作が必要な筈だから・・・系列1は。
ActiveSheet.ChartObjects("等高線図").Activate
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).Select
ActiveChart.SeriesCollection(1).Select
With Selection.Format.Line
.ForeColor.RGB = RGB(165, 0, 33)
End With
又は、フル階層で書くと、系列1は
ctiveSheet.ChartObjects("等高線図").Chart.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(165, 0, 33)
お二方の回答を元に、無事理想の実行をすることができました。
数ヶ月解決できなかった部分だったので、とても助かりました。
これまでInterior/Line/Fill/Fontなど意味を理解せずに書かれているがまま使っていた節がありました。
そういったところを勉強できたのはとても大きかったです。
かなりお時間と手間をかけていただいたかと思い、感謝しております。
No.4
- 回答日時:
ANo3です。
作成している間に、補足の図が追加されたようです。
テストしていたグラフの種類が違っていました。(汗)
(私は、透視図風の等高線グラフで試していました)
多分、そのままでもいけるのではないかと・・・
一応、テスト環境は以下です。
Windows 7、 Offis 2010
コードを用意していただきありがとうございます。
色を格納してから振り分ける形にしていただけたので、このコードをベースに作っていこうと思います。
しかしながら、等高線の色は変わってくれませんでした。
変数には全く問題ありませんでしたので、
『L.Item(i).LegendKey.Format.Fill.ForeColor.RGB = Color(index)』
この部分にはワイヤーフレーム等高線グラフ用の何等かの指定がいるのでしょうか・・・。
もしやと思って『~.LegendEntries(i).Select』を追加したりと試したりしたのですがうまくいきませんでした。
もしもまだお付き合いいただけるようでしたら、引き続きご教授いただければ幸いです。
No.3
- 回答日時:
こんにちは
グラフはほとんど使ったことがないのでほとんどわかりませんが、マクロの記録から作成してみました。(笑)
(マクロの記録では、そのままでもエラーを吐く記録を作成してくれましたが・・・)
以下の例は、凡例の塗色を変更する処理だけのサンプルです。
色の数は少なめにしてありますが、データを追加するだけで対応可能です。
Sub TestSample()
Dim L As Object, Color, d
Dim ub As Integer, lb As Integer
Dim i As Integer, index As Integer
Const g_name = "等高線図"
Color = Array( _
"165,0,33", "204,0,0", "255,0,0", "255,102,0" _
)
ub = UBound(Color)
lb = LBound(Color)
Set L = ActiveSheet.ChartObjects(g_name).Chart.Legend.LegendEntries
For i = lb To ub
d = Split(Color(i), ",")
Color(i) = RGB(d(0), d(1), d(2))
Next i
For i = 1 To L.Count
index = lb + i - 1
If index > ub Then index = ub
L.Item(i).LegendKey.Format.Fill.ForeColor.RGB = Color(index)
Next i
End Sub
No.2
- 回答日時:
excelのバージョンは幾つですか?
2003までなら、font.ColorIndex=数値、で数値は1:黒、3:赤、などと指定する必要がありますが・・・。
少なくともInteriorはセルの背景(文字などの背景)です。
OS: Windows10
バージョン:Excel2010
になります。
Interiorは意味が違ったのですね。
Interiorから先をFont.ColorIndex=数値としても
『オブジェクトは、このプロパティまたはメソッドをサポートしていません』
のエラーとなってしまいました。
まだ何が間違ってるかわかっていない状態です。
よろしければ引き続き、お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
【お題】 ・存在しそうで存在しないモノマネ芸人の名前を教えてください
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
等高線グラフの書式を設定するマクロ
その他(Microsoft Office)
-
エクセルのグラフの等高線の色を細かく設定するには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフを「似ている」順に並べ...
-
VBA グラフの存在の判定について
-
グラフの元のデータを消しても...
-
vlan internal allocation poli...
-
TXTファイルを上書き保存する前...
-
onedriveで同期解除をしたら、...
-
エクセルでファイルの最終更新...
-
WindowsからSSHでサーバーにあ...
-
沢山のフォルダにあるファイル...
-
データ移動時にポップアップメ...
-
teratarmでコマンド入力すると...
-
YAHAMA RTXシリーズのコマンド...
-
共有しているファイルを削除し...
-
USBフラッシュメモリのデータ消...
-
if文の条件に関数が入ってる場...
-
USBデータの消失
-
Excel VBAで作成したマクロをxl...
-
マイドキュメントのフォルダの...
-
セントボックスの中身が消えた!
-
一定時間経過させるコマンドは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA グラフの存在の判定について
-
論文に載せるグラフを作成したい
-
レガシーASPでのグラフ作成...
-
Excel VBAでグラフをクリックし...
-
【VBA】Excel等高線グラフの...
-
Scilabのグラフの凡例
-
グラフを「似ている」順に並べ...
-
gnuplotで関数を途切れさせるに...
-
グラフの元のデータを消しても...
-
excelのグラフをLaTexに挿入す...
-
C#のChartで目盛線をグラフの前...
-
vb.net(vs2008)でのグラフ作成...
-
Excel VBAで、グラフを特定のセ...
-
C言語でグラフ作成
-
VisualBasic5.0でグラフを編集...
-
C言語によるハノイの塔のプログ...
-
JFreeChartで多軸の時系列グラ...
-
gnuplotので、複数の物理量を縦...
-
Matlabによる複素数・・・
-
OWCによるグラフ描写について
おすすめ情報
ActiveChart.Legend.LegendEntries(1).Select
が不足している点に気づきましたが、それでも色は変わりませんでした。
また、どういうことがしたいか、手作業で作った完成イメージを貼っておきます。
引き続き、宜しくお願いします。
作業環境についての情報が漏れておりました
OS: Windows10
バージョン:Excel2010