VBA講座23 赤玉、青玉、緑玉を出現させます
(FillFormatプロパティ)

 VBA 数学マクロ講座 23 回目です。前回に引き続いてオートシェイプを VBA で制御することを学びます。今回は 赤/青/緑の玉をランダムに表示 させてみます。

赤青緑の玉を無作為に出現させます

 前回の記事で作ったマクロで1回玉を表示させてから以下のマクロを実行すると、ランダムに色が塗られます。

 Sub 赤青緑()

 Dim rd As Integer

 Randomize

 rd = Int(3 * RND + 1)

 '図形を選択します
 ActiveSheet.Shapes(1).Select

 '選んだ図形の前景色に対し以下の操作を行います
 With Selection.ShapeRange.Fill.ForeColor

 Select Case rd

 'rd = 1 なら赤です
  Case Is = 1
  .RGB = RGB(255, 0, 0)

 'rd = 2 なら青です
  Case Is = 2
  .RGB = RGB(0, 0, 255)

 'rd = 3 なら緑です
  Case Is = 3
  .RGB = RGB(0, 255, 0)

 End Select

 End With

 End Sub

 実行する度に色が無作為に変わっていくことを確認してください。

 VBAで円の色を変える

図形を選択します

 1 ~ 3 の乱数を発生させたあとに、

ActiveSheet.Shapes(1).Select

というコードで Shapes コレクションの中から(今は1つしかないはずですが)インデックス番号 1 の図形、つまり円を選択します。

前景色を指定します

 With ステートメントと Select Case ステートメントを入れ子にして塗りつぶしの色を定めます。 With と End With で囲まれた部分は同じオブジェクトやプロパティに対する処理であり、

With Selection.ShapeRange.Fill.ForeColor

という記述は選んだ図形の ShapeRange オブジェクト、FillFormat オブジェクト(塗り潰しの書式設定)を順に得て、ForeColor プロパティ(前景色)に関して以降の処理をしなさいという意味になります。ただし Select Case ステートメントで無作為に決められた rd = 1, 2, 3 に対応して赤/青/緑に塗り潰します。色指定は RGB 、つまり「赤 (Red) 、緑 (Green) 、青 (Blue) 」の比率を指定する方式で、

.RGB = RGB(255, 0, 0)

であれば、赤色成分を最大数値 255 に、その他の色成分を 0 にしているので、原色の「赤」となります。

 ≫ ランダムウォーク
 ≫ 数学マクロ講座トップページ

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。