
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ダブルクリックでセルの色を変える 1 2022/12/24 15:52
- その他(IT・Webサービス) cssの@mediaについて 1 2023/05/14 07:34
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- その他(ソフトウェア) IndesignのGPUは色?CMYKなの?RGBなの? 1 2022/05/09 19:13
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- HTML・CSS HTMLで特定の文字だけ色を変えたいのですが、指定した色と違う色が反映してしまいます。 下記、「前」 5 2023/06/27 12:08
- プリンタ・スキャナー 液タブを使っておられる方に質問です。 RGBカラーとCMYKカラーというのを最近知ったのですが、アイ 1 2022/09/04 21:48
- Web・クリエイティブ CMYKロゴをガイドラインにないRGBで使用する際の色はどうするべき?? デザイナーです。 連携会社 1 2022/05/25 16:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[VBA]グラフを作りたいです!(...
-
ホームページ上で動的にグラフ...
-
統計ソフトRを使った最適化
-
【VBA】Excel等高線グラフの...
-
excelのグラフをLaTexに挿入す...
-
Excel VBAでグラフ作成。A,C列...
-
excelで散布図に線を追加したい
-
日本語化したいソフトがあるの...
-
これは何でしょうか?
-
Ciscoのコマンド
-
リスト構造
-
WindowsNT4.0ワークステーショ...
-
教えて下さい、HPを更新したい...
-
コマンド入力だと動くけど、cro...
-
コマンドプロンプトでテキスト...
-
(mobileme) iDiskがいまいち分...
-
YAHAMA RTXシリーズのコマンド...
-
OEでアドレス帖インポート完了...
-
ユーザー辞書が消えちゃった?...
-
SDから消えたファイルは、PC内...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの元のデータを消しても...
-
Excel VBAでグラフをクリックし...
-
Excel VBAで、グラフを特定のセ...
-
VBA グラフの存在の判定について
-
論文に載せるグラフを作成したい
-
Webでのグラフ表示を行うには、...
-
【VBA】Excel等高線グラフの...
-
excelのグラフをLaTexに挿入す...
-
excelで散布図に線を追加したい
-
グラフを「似ている」順に並べ...
-
matlabのy軸を2つ利用したグラ...
-
C#のChartで目盛線をグラフの前...
-
JAVAといってもいろいろあるの...
-
c++での3次元グラフの生成
-
JavaScriptでグラフ
-
True WebChart
-
C言語によるハノイの塔のプログ...
-
Excelマクロでグラフの縦軸目盛...
-
DirectShowでフィルタの削除
-
C言語でグラフ作成
おすすめ情報
ActiveChart.Legend.LegendEntries(1).Select
が不足している点に気づきましたが、それでも色は変わりませんでした。
また、どういうことがしたいか、手作業で作った完成イメージを貼っておきます。
引き続き、宜しくお願いします。
作業環境についての情報が漏れておりました
OS: Windows10
バージョン:Excel2010