
Excel VBA で、2次元散布図グラフの、特定の系列 i を選択し、現状把握の為(後に系列の外観を VBA 経由で変更する為)に、その情報を抽出したいです。特に今回の質問では、マーカーの背景色のカラー値 (long) を取得したいです。
しかし ActiveChart.SeriesCollection(i).MarkerBackgroundColor や ActiveChart.SeriesCollection(i).MarkerBackgroundColorIndex で取得しようとすると、マーカーの背景色(塗りつぶし色)を手動で設定している時は、きちんと Color 値が表示されますが、『自動』にしていると、
1. マーカーの設定全体を『自動』にしている時は -2
2. マーカーの形式は『組み込み』であるが塗りつぶし色だけ『自動』の時は -1
が返って来てしまい、色を調べる事ができません。
(線の色の場合は、『自動』にしていても、きちんと ActiveChart.SeriesCollection(i).Format.Line.ForeColor で値が取得できるのに。)
『自動』の時は activeworkbook.colors(j) で指定したいのですが、j に何を入れたら良いのかが分からず困っています。何らか XlThemeColor 列挙から選ぶ事になるのでしょうが、
1. 散布図を作成
2. 系列の順序を入れ替え
などの操作をしてしまうと、系列 1 が常に xlThemeColorAccent1 とは限らないのです。
『自動』設定のマーカー背景色の、カラー値 (long) でも良いですし XlThemeColor 列挙値でも良いので、調べる方法は無いでしょうか?
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは
回答にはなっていませんが、ヒントにでもなれば。
グラフをVBAで扱ったことがありませんので、8割方はご質問内容の後追い確認になってしまいました。
ご説明の通り、系列のカラーを取得できそうなプロパティを調べてみても、msoNotThemeColor(=0)やmsoThemeColorMixed(-2)などが返されるだけで、実際の色に関する情報は出てこないようです。
(ただし、RGB値が返されないということから、自動設定の色になっていることは判別可能そうですね)
ということで、まず、自動設定の色はどうなっているのかを調べるために、添付図で左側の単純な表(A~Zの26系列)で、色設定を調べてみました。(添付図が盛りだくさんなので、判別しにくいかも知れませんがご容赦)
テーマカラーのAccentはリボンの色のところに表示されるパレットの、右側の6列(6色)がこれに当たっています。
(添付図の下に拡大して塗り分けています)
表の系列(例ではA2:A27)の順に、xlThemeColorAccent1~6を繰り返して割り当てているようです。
1巡目は基本色、2巡目は(黒50%)、3巡目は(白40%)・・・というように、添付図の下段の左側、①~⑤の順になっているようです。
参考までに、カラーの下に表示している数値はAccentの基本色のRGB値です。( =((B*256)+G)*256+R )
>activeworkbook.colors(j) で指定したいのですが
>j に何を入れたら良いのかが分からず困っています。
特にcolors()のこだわる必要は無いように思いますが、「j」はインデックスなので1~56です。
参考までに、添付図の一番右にcolors()のデフォルトの56色を縦2列に並べてみました。(パレットは変更可能なので環境依存です。テーマの概念が採用される以前のカラーパレットの色ではないかと推測します)
https://msdn.microsoft.com/ja-jp/library/microso …
マーカーの色をXlThemeColorで指定したいような場合は、ObjectThemeColorプロパティにmsoThemeColorAccent1などを設定すれば良いようです。もちろん、RGB値で直接指定することも可能です。
> 系列の順序を入れ替えなどの操作をしてしまうと、
>系列 1 が常に xlThemeColorAccent1 とは限らないのです
これも確認できました。けっこう厄介ですね。
少々回りくどい方法になってしまいますが、思いついたのは、系列を選択した際に数式バーに表示される関数値(=SERIES(~~))を利用する方法です。
この式は、Series.Formula で文字列として取得することができます。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/a …
添付図では、元はA,B,C,D,E・・・の順の系列を、最初の3つだけ入れ替えて、C,B,A,D,E・・・の順に変えていますが、その際の最初の系列となるC系列(元データでは3番目)のFormulaを取得してみると
=SERIES(Sheet1!$A$4,Sheet1!$B$1:$D$1,Sheet1!$B$4:$D$4,1)
のようになります。
最後の1の数字が順序を示していますが、元データのインデックスの3であることを期待しましたが、そうではなく添字と一致するように変更されてしまっています。
しかしながら、第一引数が系列ラベルのセル位置を示していますので、A4セルが系列名であることから、系列軸からこれを検索すれば元の表では何番目のデータであるかがわかり、その順序から自動で割り当てられる色も判別できるものと思います。
もしも、元データの範囲が固定ならば、検索するまでもなくラベルの行位置を調べるだけで順序はわかりますね。
・・・とは言っても、かなりまわりくどい方法ですので、もっと簡単な方法がありそうな気がしますが、残念ながらこの方法以外に見つけることができませんでした。(…ですので、ご参考までです)

御丁寧に、ありがとうございました。
系列の順序を入れ替えると、系列インデックスは入れ替わってもテーマカラーは不変なので、どこかしらテーマカラーを保持しているプロパティがあるような気がするのですが、もどかしいところです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) セルに特定の色が出た時だけ、式を発動させたい 4 2022/06/17 10:32
- ノートパソコン ポラリスオフィスを使ってます。グラフの折れ線にマーカーが入ってしまい見にくいので消したいのですがデー 1 2022/09/09 14:49
- その他(プログラミング・Web制作) ワードプレスのプラグインであるAddQuicktagを使いたいが… 3 2022/04/18 15:03
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- その他(Microsoft Office) エクセル 表の移動 2 2023/04/05 20:29
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
質問58753 このコードでうまく...
-
【マクロ】並び替えの範囲が、...
-
以下のプログラムの実行結果は...
-
vbs ブック共有を解除
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
Excelのマクロについて教えてく...
-
VBAでユーザーフォームを指定回...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excel 範囲指定スクショについ...
-
【マクロ】値を渡されたプロシ...
-
Excelのマクロについて教えてく...
-
Excel VBA 選択範囲の罫線色の...
-
エクセルのVBAコードと数式につ...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
testファイル内にある複数のpng...
-
改行文字「vbCrLf」とは
-
エクセルVBA 検索結果を隣のシ...
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
【マクロ】切取りの場合、形式...
-
【ExcelVBA】5万行以上のデー...
-
ExcelVBAでパワポを操作したい
-
(EXCEL超初心者)EXCELの関数(ま...
-
エクセルの改行について
-
Excelマクロで使うVBAコードを...
-
ワードの図形にマクロを登録で...
-
【マクロ】変数を使った、文字...
-
VBAでFOR NEXT分を Application...
-
VBAの質問(Msgboxについて)です
-
エクセルのVBAコードについて教...
-
Excelマクロで使うVBAコードを...
-
Excelのマクロについて教えてく...
-
VBAの「To」という語句について
-
【マクロ】値を渡されたプロシ...
おすすめ情報