VBAでのフレーム(Frame)の使い方とプロパティおよびイベント

Excel VBA からフレーム(Frame)コントロールを利用する方法です。フレームは他のコントロールを視覚的にグループにまとめたい場合に使用される他、オプションボタンをのグループ化を行う場合にも使用されるコントロールです。ここでは Excel のユーザーフォームで設置できるフレームを VBA から使用する方法と、フレームで設定可能なプロパティおよびイベントの一覧について解説します。

(Last modified: )

フレームのプロパティ一覧

ユーザーフォームに設置するフレームで利用可能なプロパティ一覧は次の通りです。

フレームは既定のプロパティがありません。

いくつかのプロパティについてはこのあと簡単に解説します。

フレームに表示する文字列を設定する(Caption)

フレームに表示される文字列を設定するには Caption プロパティに値を設定します。

オブジェクト.Caption [= String ]

フレームに表示する文字列を代入してください。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、フレームに表示する文字列を設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    Frame1.Caption = "GroupA"
End Sub

フレームに表示する画像を設定する(Picture)(1)

フレームに表示する画像を設定する(Picture)(2)

ユーザーフォームを表示すると、表示されたフレームに指定した文字列が表示されているのが確認できます。

フレームに表示する画像を設定する(Picture)(3)

フレームの表示位置を設定する(Top,Left)

フレームが表示される位置を設定するには Top プロパティと Left プロパティに値を設定します。

オブジェクト.Top [= Single ]
オブジェクト.Left [= Single ]

Top プロパティにはユーザーフォームの上端からフレームの上端までの距離、 Left プロパティにはユーザーフォームの左端からフレームの左端までの距離をそれぞれ単精度浮動小数点型の数値で代入します。単位はポイントです。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、フレームの位置を設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    Frame1.Top = 50
    Frame1.Left = 60
End Sub

フレームの表示位置を設定する(Top,Left)(1)

フレームの表示位置を設定する(Top,Left)(2)

ユーザーフォームを表示すると、表示されたフレームが指定した位置で表示されているのが確認できます。

フレームの表示位置を設定する(Top,Left)(3)

フレームの幅と高さを設定する(Width,Height)

フレームの幅と高さを設定するには幅については Width プロパティ、高さについては Height プロパティに値を設定します。

オブジェクト.Width [= Single ]
オブジェクト.Height [= Single ]

幅および高さをあらわす単精度浮動小数点型の数値を代入してください。単位はポイントです。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、フレームの幅と高さを設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    Frame1.Width = 150
    Frame1.Height = 40
End Sub

フレームの幅と高さを設定する(Width,Height)(1)

フレームの幅と高さを設定する(Width,Height)(2)

ユーザーフォームを表示すると、表示されたフレームの幅および高さが指定した値に設定されているのが確認できます。

フレームの幅と高さを設定する(Width,Height)(3)

フレームの文字色と背景色を設定する(ForeColor,BackColor)

フレームで表示される文字列の文字色を設定するには ForeColor プロパティを使用します。フレームの背景色を設定するには BackColor プロパティを使用します。

オブジェクト.ForeColor [= Long ]
オブジェクト.BackColor [= Long ]

対象のオブジェクトの ForeColor プロパティ、または BackColor プロパティに対して色を表す長整数型の値を代入します。値は Windows のシステムカラーを表す値や定数、または青緑赤の値を使った色を表す値を代入します。なお背景色を設定する場合は背景が不透明になっている必要があります。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、フレームの文字色および背景色を設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    Frame1.ForeColor = RGB(255, 255, 255)
    Frame1.BackColor = RGB(63, 100, 127)
End Sub

フレームの文字色と背景色を設定する(ForeColor,BackColor)(1)

フレームの文字色と背景色を設定する(ForeColor,BackColor)(2)

ユーザーフォームを表示すると、表示されたフレームに文字色および背景色の設定が行われているのが確認できます。

フレームの文字色と背景色を設定する(ForeColor,BackColor)(3)

フレームの枠線を設定する(BorderStyle,BorderColor)

フレームの枠線を表示するかどうか設定するには BorderStyle プロパティに値を設定します。

オブジェクト.BorderStyle [= fmBorderStyle ]

代入可能な値は次の通りです。

定数説明
fmBorderStyleNone0境界線は表示されません。
fmBorderStyleSingle1境界線は表示されます。

枠線を表示する場合は fmBorderStyleSingle 、枠線を表示しない場合は fmBorderStyleNone を代入してください。

フレームの枠線を表示する場合に、フレームの枠線の色を設定するには BorderColor プロパティに値を設定します。

オブジェクト.BorderColor [= Long ]

色を表す長整数型の値を代入します。値は Windows のシステムカラーを表す値や定数、または青緑赤の値を使った色を表す値を代入します。

なお枠線を表示するかどうかを設定する BorderStyle プロパティと、コントロールを立体的に表示するかどうかを設定する SpecialEffect プロパティは同時に設定できません。一方のプロパティに 0 以外の値を指定すると、もう一方のプロパティの値が 0 に設定されます。 BorderStyle プロパティに fmBorderStyleSingle を設定すると SpecialEffect プロパティは fmSpecialEffectFlat が設定されて立体的に表示されなくなります。逆に枠線を非表示にするために BorderStylefmBorderStyleNone を設定すると、フレームの SpecialEffect のデフォルト値は fmSpecialEffectSunken のためフレームが立体的に表示されます。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、一つ目のフレームには指定した色で枠線を表示するように設定し、二つ目のフレームには枠線を表示しないように設定しています。

※ 境界線を表示しない場合 SpecialEffect プロパティのデフォルト設定によって境界の部分が立体的に表示されるので、同時に SpecialEffect プロパティに fmSpecialEffectFlat を設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    Frame1.BorderStyle = fmBorderStyleSingle
    Frame1.BorderColor = RGB(200, 0, 0)

    Frame2.BorderStyle = fmBorderStyleNone
    Frame2.SpecialEffect = fmSpecialEffectFlat
End Sub

フレームの枠線を設定する(BorderStyle,BorderColor)(1)

フレームの枠線を設定する(BorderStyle,BorderColor)(2)

ユーザーフォームを表示すると、左のフレームには枠線が表示され、枠線の色が指定した色に設定されます。また右のフレームは枠線が表示されなくなります。

フレームの枠線を設定する(BorderStyle,BorderColor)(3)

フレームのイベント一覧

フレームで発生するイベント一覧は次の通りです。

AddControl
BeforeDragOver
BeforeDropOrPaste
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
RemoveControl
Scroll
Zoom

フレームの既定のイベントは Click イベントです。

-- --

Excel のユーザーフォームで設置できるフレームを VBA から使用する方法と、フレームで設定可能なプロパティおよびイベントの一覧について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。