Excel VBA 図形の塗りつぶしを設定するプロパティやメソッド 

スポンサーリンク

図形の塗りつぶしを設定する方法

図形の塗りつぶしの設定をするには、Shape【シェイプ】オブジェクトまたは、ShapeRange【シェイプレンジ】コレクションFill【フィル】プロパティを使用してFillFormat【フィルフォーマット】オブジェクトを取得します。FillFormat【フィルフォーマット】オブジェクトは、図形の塗りつぶしの書式設定を行うためのオブジェクトで、色、グラデーション、画像、テクスチャーなどいろいろな種類の設定を行うプロパティやメソッドを持っています。ちなみに、Fill【フィル】は、満たすや充填するなどの意味があります。

Fill【フィル】プロパティ

塗りつぶしの書式設定を行うFillFormat【フィルフォーマット】オブジェクトを取得するにはFill【フィル】プロパティを使用します。

Fill【フィル】プロパティの書式と設定値の説明

オブジェクト.Fill

  • オブジェクト(必須)
    Shape【シェイプ】オブジェクトまたは、ShapeRenge【シェイプレンジ】コレクションを指定します。

※Fill【フィル】プロパティは、直線やコネクターには使用できません。直線の書式設定はLineFormat【ラインフォーマット】オブジェクトを使用してください。


FillFormat【フィルフォーマット】オブジェクトのプロパティ一覧

プロパティ 内容
ForeColor【フォアカラー】 色の書式を設定する
ColorFormat【カラーフォーマット】オブジェクトを取得します。
Transparency【トランスパレンシィ】 図形に透明度を設定します。
Visible【ビジブル】 図形の塗りつぶしの表示、非表示の設定をします。

FillFormat【フィルフォーマット】オブジェクトのメソッド一覧

メソッド 内容
OneColorGradient【ワンカラーグラディエント】 1色のグラデーションで塗りつぶします。
TwoColorGradient【トゥカラーグラディエント】 2色のグラデーションで塗りつぶします。
PresetGradient【プリセットグラディエント】 既定のグラディーションを図形に設定します。
PresetTextured【プリセットテクスチャード】 図形の塗りつぶしにテクスチャーを設定します。
Patterned【パターンドゥ】 図形の塗りつぶしに網かけなどの
パターンを設定します。

ForeColor【フォアカラー】プロパティ

図形に色を設定するには、FillFormat【フィルフォーマット】オブジェクトForeColor【フォアカラー】プロパティを使用してColorFormat【カラーフォーマット】オブジェクトを取得します。ColorFormat【カラーフォーマット】オブジェクトは色をRGBプロパティのRGB関数で指定したりSchemeColor【スキームカラー】プロパティを使用して色番号で指定します。

ForeColor【フォアカラー】プロパティの書式と設定値の説明

オブジェクト.ForeColor

  • オブジェクト(必須)
    FillFormat【フィルフォーマット】オブジェクトを指定します。

※SchemeColor【スキームカラー】プロパティの色番号はColorIndex【カラーインデックス】プロパティのインデックス番号とは異なります。ColorIndexプロパティのインデックス番号に7を加算した値がSchemcolorプロパティの色番号と同じになります。例として黒の場合ColorIndexプロパティは1、Schemcolorプロパティは8


Transparency【トランスパレンシィ】プロパティ

図形の塗りつぶしの透明度を設定または、取得するには、FillFormat【フィルフォーマット】オブジェクトのTransparency【トランスパレンシィ】プロパティを使用します。

Transparency【トランスパレンシィ】プロパティの書式と設定値の説明

【設定】
オブジェクト.Transparency = 設定値
【戻り値】倍精度浮動小数点型(Single)の値

  • オブジェクト(必須)
    FillFormat【フィルフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    透明度を0.0(不透明)~1.0(透明)の範囲の数値で指定します。

Visible【ビジブル】プロパティ

図形の塗りつぶしの表示、非表示を設定または取得するには、FillFormat【フィルフォーマット】オブジェクトのVisible【ビジブル】プロパティを使用します。

Visible【ビジブル】プロパティの書式と設定値の説明

【設定】
オブジェクト.Visible = 設定値
【戻り値】ブール型 (Boolean) の値

  • オブジェクト(必須)
    FillFormat【フィルフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    塗りつぶし色を表示する場合は「True」(既定値)塗りつぶし色を非表示(透明色)にする場合は「False」を指定します。

四角形を青で塗りつぶし透明度を50%に設定するコード例

Sub 図形塗りつぶし()
Dim R As Range
Set R = Range("B2:C5")
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height).Fill
.ForeColor.RGB = RGB(0, 0, 255)
.Transparency = 0.5
End With
End Sub

実行結果


OneColorGradient【ワンカラーグラディエント】メソッド

図形を1色のグラデーションで塗りつぶすには、FillFormat【フィルフォーマット】オブジェクトのOneColorGradient【ワンカラーグラディエント】メソッドを使用します。ForeColor【フォアカラー】プロパティで指定した色と、明度によって指定した黒から白の間の色によりグラデーションを表現します。

OneColorGradient【ワンカラーグラディエント】メソッドの書式と設定値(引数)の説明

オブジェクト.OneColorGradient GradientStyle, Variant, Degree

  • オブジェクト(必須)
    FillFormat【フィルカラー】オブジェクトを指定します。
  • GradientStyle【グラディエントスタイル】(必須)
    グラデーションの種類をMsoGradientStyle列挙型の定数または値で指定します。
  • Variant【バリアント】(必須)
    グラデーションのバリエーションを1~4までの整数で指定します。
  • Degree【ディグリー】(必須)
    グラデーションの明度を0.0(暗い)~1.0(明るい)の間の値で指定します。

MsoGradientStyle列挙型の定数とVariantの値


TwoColorGradient【トゥカラーグラディエント】メソッド

図形を2色のグラデーションで塗りつぶすには、FillFormat【フィルフォーマット】オブジェクトのTwoColorGradient【トゥカラーグラディエント】メソッドを使用します。1色目をForeColor【フォアカラー】プロパティで指定し、2色目をBackColor【バックカラー】プロパティで指定します。

TwoColorGradient【トゥカラーグラディエント】メソッドの書式と設定値(引数)の説明

オブジェクト.TwoColorGradient GradientStyle, Variant

  • オブジェクト(必須)
    FillFormat【フィルフォーマット】オブジェクトを指定します。
  • GradientStyle【グラディエントスタイル】(必須)
    グラデーションの種類をMsoGradientStyle列挙型の定数または値で指定します。
  • Variant【バリアント】(必須)
    グラデーションのバリエーションを1~4までの整数で指定します。

赤と黄色の2色のグラデーションのバリエーションをセルに合わせて表示するコード例

Sub グラディション2色()
Dim R As Range
Dim i As Long
Dim j As Long
For i = 1 To 7
For j = 1 To 4
Set R = Cells(i, j)
On Error Resume Next
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height)
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Line.Weight = 1
.Fill.TwoColorGradient i, j
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Fill.BackColor.RGB = RGB(255, 255, 0)
End With
Next j
Next i
End Sub

実行結果


PresetGradient【プリセットグラディエント】メソッド

あらかじめ用意されている規定のグラデーションを図形に設定するには、FillFormat【フィルフォーマット】オブジェクトPresetGradient【プリセットグラディエント】メソッドを使用します。

PresetGradient【プリセットグラディエント】メソッドの書式と設定値(引数)の説明

オブジェクト.PresetGradient Style, Variant, PersetGradientType

  • オブジェクト(必須)
    FillFormat【フィルフォーマット】オブジェクトを指定します。
  • Style【スタイル】(必須)
    上記のMsoGradientStyle列挙型の定数で指定します。
  • Variant【バリアント】(必須)
    上記のVariantの値 グラデーションの種類を1~4の整数で指定します。
  • PersetGradientType【プリセットグラディエントタイプ】(必須)
    MsoPersetGradientTypeクラスの定数または値で指定します。

MsoPersetGradientTypeクラスの定数

Style 1 の場合


既定のグラデーションをセルに合わせた図形に表示するコート例

Sub 既定グラディション()
Dim R As Range
Dim i As Long
Dim j As Long
For i = 1 To 24
For j = 1 To 4
Set R = Cells(i, j)
On Error Resume Next
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height)
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Line.Weight = 1
.Fill.PresetGradient 1, j, i
End With
Next j
Next i
End Sub

PresetTextured【プリセットテクスチャード】メソッド

図形の塗りつぶしにテクスチャーを設定するには、FillFormat【フィルフォーマット】オブジェクトのPresetTextured【プリセットテクスチャード】メソッドを使用します。

PresetTextured【プリセットテクスチャード】メソッドの書式と設定値(引数)の説明

オブジェクト.PresetTextured PresetTexture

  • オブジェクト(必須)
    FillFormat【フィルフォーマット】オブジェクトを指定します。
  • PresetTexture【プリセットテクスチャー】(必須)
    テクスチャーの種類をMsoPresetTexture列挙型の定数または値で指定します。

MsoPresetTexture列挙型の定数


セルに合わせた図にすべてのテクスチャーを表示するコート例

Sub 既定テクスチャー()
Dim R As Range
Dim i As Long
For i = 1 To 24
Set R = Cells(i, 1)
On Error Resume Next
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height)
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Line.Weight = 1
.Fill.PresetTextured i
End With
Next i
End Sub

Patterned【パターンドゥ】メソッド

図形の塗りつぶしに網かけなどのパターンを設定するには、FillFormat【フィルフォーマット】オブジェクトのPatterned【パターンドゥ】メソッドメソッドを使用します。パターン色をForeColor【フォアカラー】プロパティで指定し、背景色をBackColor【バックカラー】プロパティで指定ます。

Patterned【パターンドゥ】メソッドの書式と設定値(引数)の説明

オブジェクト.Patterned Pattern

  • オブジェクト(必須)
    FillFormat【フィルフォーマット】オブジェクトを指定します。
  • Pattern【パターン】(必須)
    パターンをMsoPatternType列挙型の定数または値で指定します。

MsoPatternType列挙型の定数


セルに合わせた図形に54種類のパターンを表示するコード例

Sub パターン()
Dim R As Range
Dim i As Long
For i = 1 To 54
Set R = Cells(i, 1)
On Error Resume Next
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height)
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Line.Weight = 1
.Fill.Patterned i
.Fill.ForeColor.RGB = RGB(0, 0, 0)
.Fill.BackColor.RGB = RGB(255, 255, 255)
End With
Next i
End Sub

以上で、図形の塗りつぶしを設定するプロパティやメソッドについての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告