特定の図形だけ色を変えるマクロとか便利だよね
クリックしたら色が変わるとかも良いよね
じゃあVBAで図形の色を変える方法を紹介するよ
手動でやるとこんな感じかな・・・
図形の色を変える方法をご紹介していきます。
カラーインデックス、RGBの設定方法についてはこちら↓↓↓もぜひ参考にして下さいね。
カラーインデックスを指定して色を変える方法
てかカラーインデックスってなんだ?
1の色~、2の色~って番号付けてある色があるんだ
カラーインデックスについて
良く使いそうな色に番号をつけてあって、その番号をカラーインデックスと言います。
以下に初期値の0~15までを並べてみました。
構文
Visio VBAで図形の塗りつぶしの色を変更する構文はこちら。
Cells(“FillForegnd”) = カラーインデックス
Sample
選択中の図形の色を取得・変更するサンプルです。
何かしら図形を描いて選択しておいてください。
コード
Sub test1() '現在の色のカラーインデックスを取得します。 MsgBox (ActiveWindow.Selection(1).Cells("FillForegnd")) '色を変えます。 ActiveWindow.Selection(1).Cells("FillForegnd") = 3 End Sub
塗りつぶしの色をカラーインデックス3(緑)に変更します。
実行結果
まずカラーインデックスの番号、この時は「1」がメッセージボックスが出ます。
OKを押すと四角形の色が緑に変わったと思います。
RGBを指定して色を変える方法
てかRGBカラーってなんだ?
光の三原色R:赤、G緑、B青で色を表す方法だよ
RGBについて
色を光の3原色RGBで指定します。数字が大きい方が色が濃くなり、混色して色を表します。例えばRが255G他が0なら赤、RとGが255でBが0なら黄色など。PCのディスプレイで表される色はRGBで表現できます。
RGB | 設定範囲 |
Red(赤) | 0~255 |
Green(緑) | 0~255 |
Blue(青) | 0~255 |
構文
Visio VBAで図形の色を変更する構文はこちら。
Cells(“FillForegnd”) .Formula = “RGB(Rの値,Gの値,Bの値)”
※RGBの値は0~255で指定
Sample
選択中の図形の色を変えるさせるサンプルです。
何かしら図形を描いて選択しておいてください。
コード
Sub test1() '色を変えます。 ActiveWindow.Selection(1).Cells("FillForegnd") .Formula = "RGB(255,255,0)" End Sub
実行結果
四角形の色が黄色に変わったと思います。
描く時に色を指定する方法
描く時にも指定できるって言ってたよね?
うん!Withを使うと一度いろんな書式を指定できるよ
Sample
図形を描画し、書式を変更するサンプルです。
コード
Sub test5() Dim DrawRect As Object '四角を描きます。 Set DrawRect = ActivePage.DrawRectangle(4, 7, 3, 8) With DrawRect .Name = "Shikaku" '図形の名前をShikakuにする .Cells("LinePattern") = 1 '線の種類を実線にする .Cells("FillForegnd") = 3 '塗りつぶしの色を緑(インデックス3)にする End With End Sub
実行結果
こんな図形が描けたのではないでしょうか。
図形の名前をチェックして色を変えてみた
「Shikaku2」など名前後ろに偶数の数字が付いている図形だけを赤くしてみるよ。
Sample
名前がShikaku+偶数の数字である図形を赤くします。
四角形が10個、名前がShikaku0~Shikaku9だったとします。
コード
Sub test11() Dim Namae As String '図形の数を数え、その回数繰り返す For i = 1 To ActiveWindow.Page.Shapes.Count① '名前を取得 Namae = ActiveWindow.Page.Shapes(i).Name② '名前がShikakuで、付いている数字が偶数なら赤くする If (Left(Namae, 7) = "Shikaku" And Right(Namae, 1) Mod 2 = 0) Then③ ActiveWindow.Page.Shapes.Item(Namae).Cells("FillForegnd").Formula = "RGB(255,0,0)" End If Next End Sub
①Countはシェイプの全体数なので、全ての図形に対して繰り返します。
②名前を取得してNamaeという変数に入れます。
③NameがShikaku+偶数である時に色を赤に変えます。
実行結果
こんな感じで四角が1個おきに赤くなったのではないでしょうか。
こんなのあったら嬉しい場面って結構あるかも