コントロールの枠線を設定する(BorderStyle,BorderColorプロパティ)

ユーザーフォームに設置したコントロールによっては枠線を設定できるものがあります。枠線の表示の有無については BorderStyle プロパティ、枠線の色については BorderColor プロパティを使用します。ここでは Excel のユーザーフォームで BorderStyle プロパティおよび BorderColor プロパティを使ってコントロールの枠線を設定する方法について解説します。

(Last modified: )

コントロールの枠線の表示を設定する

コントロールに枠線を表示するかどうかを設定するには BorderStyle プロパティを使用します。例えばラベルの BorderStyle プロパティの値はデフォルトで「0 - fmBorderStyleNone」という値が設定されています。この値の場合は枠線が表示されません。

コントロールの枠線の表示を設定する(1)

枠線を表示するには BorderStyle プロパティの値のところに表示されているドロップダウンメニューをクリックし、「1 - fmBorderStyleSingle」を選択してください。

コントロールの枠線の表示を設定する(2)

ラベルの枠線が表示されました。

コントロールの枠線の表示を設定する(3)

このように BorderStyle プロパティの値を変更することで、コントロールの枠線を表示するように設定することができます。

コントロールの境界線の表示については SpecialEffect プロパティと BorderStyle プロパティの値はどちらかのみ設定することができます。どちらか一方のプロパティに 0 以外の値を指定すると、もう一方のプロパティの値が 0 に設定されます。 SpecialEffect プロパティの使い方については「コントロールの境界部分を立体的に表示する(SpecialEffectプロパティ)」を参照されてください。

コントロールの枠線の色を設定する

コントロールの背景色を設定するには BorderColor プロパティを使用します。例えばラベルの BorderColor プロパティの値はデフォルトで「&H80000006&」という値が設定されています。

コントロールの枠線の色を設定する(1)

この色の値は色コードなどではなく Windows のシステムカラーを表しています。システムカラーというのは簡単に言うと Windows でここにはこの色を使用すると定義されている色の一覧のことです。システムカラーの組み合わせは設定によってく変わるため、固定の色が対応しているわけではない点にご注意ください。

ユーザーフォームのプロパティで値を設定する場合はこの Windows のシステムカラーを表す値を指定するか、青緑赤の値を使って特定の色を指定します。詳しくは「プロパティで色を指定する方法」を参照されてください。

それではラベルの枠線の色を変更してみます。ラベルをクリックして選択したあと、プロパティウィンドウの BorderColor の項目をクリックしてください。そして値のところに表示されたドロップダウンメニューをクリックしてください。

コントロールの枠線の色を設定する(2)

色を選択する画面が表示されます。最初は「システム」タブが選択されており、システムカラーから色を選択できます。

コントロールの枠線の色を設定する(3)

現在は「ウィンドウ枠」が選択されています。新しい色として「強調表示」をクリックしてみます。

コントロールの枠線の色を設定する(4)

ラベルの枠線の色がシステムカラーの「強調表示」に設定されている色に変更されました。

コントロールの枠線の色を設定する(5)

また色を選択する画面で「パレット」タブをクリックしてください。

コントロールの枠線の色を設定する(6)

カラーパレットが表示されるので設定したい新しい色をクリックしてください。

コントロールの枠線の色を設定する(7)

ラベルの枠線の色がカラーパレットでクリックした色に変更されました。パレットで色を指定した場合は、 Windows のシステムカラーではなく青緑赤の値を使って特定の色を指定します。

コントロールの枠線の色を設定する(8)

このように BorderColor プロパティの値を変更することで、コントロールの枠線の色を変更することができます。

VBAのプログラムの中でBorderStyleプロパティを設定する

プロパティウィンドウを使って BorderStyle プロパティの値を変更する代わりに、 VBA のコードを記述して BorderStyle プロパティの値を変更することもできます。

プログラムの中で BorderStyle プロパティを設定する場合は次の書式を使用します。

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

対象のオブジェクトの BorderStyle プロパティに対して枠線の状態を表す値を代入します。代入可能な値は次の通りです。

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

境界線を非表示にされたい場合は、値として fmBorderStyleNone を設定してください。また境界線を表示に設定したい場合は、値として fmBorderStyleSingle を設定してください。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で BorderStyle プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でBorderStyleプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でBorderStyleプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャを使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。

Private Sub UserForm_Initialize()
    Label1.BorderStyle = fmBorderStyleNone
    Label2.BorderStyle = fmBorderStyleSingle
End Sub

VBAのプログラムの中でBorderStyleプロパティを設定する(3)

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でBorderStyleプロパティを設定する(4)

ユーザーフォームが表示されました。追加されているラベル中で上のラベルは枠線が非表示になり、下のラベルは枠線が表示されるようになっていることが確認できます。

VBAのプログラムの中でBorderStyleプロパティを設定する(5)

このように VBA のプログラムの中で BorderStyle プロパティの値を変更することができました。

VBAのプログラムの中でBorderColorプロパティを設定する

プロパティウィンドウを使って BorderColor プロパティの値を変更する代わりに、 VBA のコードを記述して BorderColor プロパティの値を変更することもできます。

プログラムの中で BorderColor プロパティを設定する場合は次の書式を使用します。

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

対象のオブジェクトの BorderColor プロパティに対して長整数型の値を代入します。値は Windows のシステムカラーを表す値や定数、または青緑赤の値を使った色を表す値を代入します。

BorderColor プロパティが意味を持つのは枠線が表示されるように設定されている場合だけです。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で BorderColor プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でBorderColorプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でBorderColorプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャを使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。

Private Sub UserForm_Initialize()
    Label1.BorderStyle = fmBorderStyleNone
    Label1.BorderColor = RGB(255, 0, 0)
    Label2.BorderStyle = fmBorderStyleSingle
    Label2.BorderColor = RGB(255, 0, 0)
End Sub

VBAのプログラムの中でBorderColorプロパティを設定する(3)

どちらのラベルにも RGB 関数を使って色を指定しています( RGB 関数の使い方については「RGB関数:色を表す数値を取得する」を参照されてください)。ただ上のラベルは BorderStyle プロパティを使って枠線を非表示にしているのに対して、下のラベルは枠線を表示しています。

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でBorderColorプロパティを設定する(4)

ユーザーフォームが表示されました。追加されている 2 つのラベルにそれぞれ枠線の色を設定していますが、枠線が非表示になっている上のラベルには枠線の色を設定しても枠線は表示されず、枠線が表示されている下のラベルだけ枠線の色が変更されていることが確認できます。

VBAのプログラムの中でBorderColorプロパティを設定する(5)

このように VBA のプログラムの中で BorderColor プロパティの値を変更することができました。

-- --

Excel のユーザーフォームで BorderStyle プロパティおよび BorderColor プロパティを使ってコントロールの枠線を設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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