はじめに
Excel VBAで資料を自動作成するとき、図形やグラフの色を条件に応じて変えたり、レポート全体で統一感のあるデザインにしたりしたい、と考えたことはありませんか?
VBAを使えば、シェイプの塗りつぶしの色を自由に、そして柔軟に設定することができます。色の指定方法にはいくつか種類があり、用途によって使い分けるのが効率化のポイントです。
この記事では、VBAでシェイプの塗りつぶし色を指定する代表的な3つの方法を、具体的なコードと共に分かりやすく解説します。
事前準備:操作対象のシェイプに名前を付ける
VBAで特定のシェイプを確実に操作するため、あらかじめシェイプに「色設定サンプル」という名前を付けておきましょう。名前を付けておくことで、コードの意図が明確になり、管理がしやすくなります。
(名前の付け方:シェイプを選択 → 「図形の書式」タブ → 「オブジェクトの選択と表示」から名前を変更)
方法1:RGB値で直接色を指定する (.RGB
)
特定の色をピンポイントで正確に表現したい場合に最も確実な方法が、RGB値で指定する方法です。RGBは**赤 (Red)、緑 (Green)、青 (Blue)**の光の三原色を、それぞれ0~255の数値で混ぜ合わせて色を表現します。
VBAコード例
Sub SetColor_By_RGB()
' "色設定サンプル"という名前のシェイプを対象
' RGB値 (0, 128, 128) はティールグリーン
ActiveSheet.Shapes("色設定サンプル").Fill.ForeColor.RGB = RGB(0, 128, 128)
End Sub
解説
Fill.ForeColor.RGB
プロパティに、RGB(赤, 緑, 青)
関数で作成した色の値を代入します。Webカラーコードなど、使いたい色のRGB値が明確に決まっている場合に非常に便利です。
方法2:テーマの色のインデックスで指定する (.SchemeColor
)
Excelの「テーマの色」パレットと連動させて色を設定する方法です。これにより、後からExcelの[デザイン]タブでテーマを変更した際に、シェイプの色も自動的に追従させることができます。
VBAコード例
Sub SetColor_By_SchemeColor()
' "色設定サンプル"という名前のシェイプを対象
' テーマの色のインデックス10番 (通常は青系のアクセント色) を指定
ActiveSheet.Shapes("色設定サンプル").Fill.ForeColor.SchemeColor = 10
End Sub
解説
Fill.ForeColor.SchemeColor
プロパティに、テーマカラーパレットのインデックス番号(1から始まる整数)を指定します。どの番号がどの色に対応するかはテーマによって異なりますが、一般的に8
~13
がアクセントカラーに割り当てられています。ブック全体でデザインの統一感を保ちたい場合に最適です。
方法3:テーマの色と明暗で指定する (.ObjectThemeColor
+ .TintAndShade
)
方法2をさらに柔軟にした方法です。基準となるテーマの色を選び、その色を明るくしたり(Tint)、暗くしたり(Shade)して、より細かい色合いを表現できます。
VBAコード例
Sub SetColor_By_ThemeColor_Tint()
' "色設定サンプル"という名前のシェイプを対象
With ActiveSheet.Shapes("色設定サンプル").Fill.ForeColor
' テーマの「アクセント2」(通常はオレンジ系) の色を基準にする
.ObjectThemeColor = msoThemeColorAccent2
' 基準の色を30%暗くする (-1から1の範囲で指定)
.TintAndShade = -0.3
End With
End Sub
解説
まずObjectThemeColor
プロパティで、msoThemeColorAccent1
(アクセント1)やmsoThemeColorBackground1
(背景1)といった定数を使って基準の色を選択します。 次に.TintAndShade
プロパティで、色の明暗を調整します。値は-1
(最も暗い)から1
(最も明るい)の範囲で指定し、0
が基準の色のままです。この例では-0.3
なので、少し暗い色合いになります。
どの方法を使うべき? 使い分けのヒント
3つの方法の使い分けに迷ったら、以下を参考にしてください。
- RGB (
.RGB
):- 使う場面: 会社のロゴカラーなど、絶対に変わらない特定の色を使いたいとき。
- 特徴: 環境に左右されず、常に同じ色を再現できる。
- テーマの色 (
.SchemeColor
/.ObjectThemeColor
):- 使う場面: ブック全体のデザインテーマに合わせて色を変えたいとき。複数のレポートで色のトーンを統一したいとき。
- 特徴: 保守性が高い。Excelのテーマを変更するだけで、VBAコードを修正せずに全ての色を一括で変更できる。
まとめ
今回は、VBAでシェイプの塗りつぶし色を設定する3つの主要な方法をご紹介しました。
.RGB
: 特定の色をピンポイントで指定.SchemeColor
: テーマカラーパレットの番号で指定.ObjectThemeColor
と.TintAndShade
: テーマの色を基準に明暗を調整
これらの方法を適切に使い分けることで、見た目が美しいだけでなく、メンテナンスも容易なExcelマクロを作成することができます。ぜひ、あなたの業務自動化にお役立てください。