コントロールの境界部分を立体的に表示する(SpecialEffectプロパティ)

ユーザーフォームに設置したコントロールの境界部分を影や浮き出しなどを使って立体的に表示する設定するには SpecialEffect プロパティを使用します。ここでは Excel のユーザーフォームで SpecialEffect プロパティを使ってコントロールの境界部分を立体的に表示する方法について解説します。

(Last modified: )

境界部分を立体的に表示する

コントロールの境界部分を立体的に表示するかどうか設定するには SpecialEffect プロパティを使用します。例えばラベルの SpecialEffect プロパティの値はデフォルトで「0 - fmSpecialEffectFlat」という値が設定されています。この値は境界部分を立体的に表示しません。なおデフォルトの値はコントロールの種類によって異なります。

境界部分を立体的に表示する(1)

境界を立体的に表示するかどうか設定するには SpecialEffect プロパティの値のところに表示されているドロップダウンメニューをクリックし、設定したい値をクリックしてください。

境界部分を立体的に表示する(2)

選択可能な値は次の通りです。

定数説明
fmSpecialEffectFlat0境界は平面的に表示されます
fmSpecialEffectRaised1オブジェクトの上端と左端が強調され、下端と右端に影が付きます
fmSpecialEffectSunken2オブジェクトの上辺と左辺には影が付けられ、下辺と右辺は強調表示されます
fmSpecialEffectEtched3境界線がコントロールの周囲に彫り込まれているように見えます
fmSpecialEffectBump6オブジェクトの下端と右端に浮き出しが適用され、上端と左端は平面的に表示されます

ラベルとイメージのデフォルト値は fmSpecialEffectFlat です。ラベルとイメージ以外のデフォルト値は fmSpecialEffectSunken です。

チェックボックスとオプションボタンは fmSpecialEffectFlat または fmSpecialEffectSunken のみ選択できます。トグルボタンは SpecialEffect プロパティが無効になっており値を設定することができません。

それではラベル、テキストボックス、コンボボックス、イメージの SpecialEffect プロパティの値を変更した場合にどのように表示されるのかを確認してみます。

fmSpecialEffectFlat:

境界部分を立体的に表示する(3)

fmSpecialEffectRaised:

境界部分を立体的に表示する(4)

fmSpecialEffectSunken:

境界部分を立体的に表示する(5)

fmSpecialEffectEtched:

境界部分を立体的に表示する(6)

fmSpecialEffectBump:

境界部分を立体的に表示する(7)

チェックボックスとオプションボタンについては fmSpecialEffectFlat または fmSpecialEffectSunken のどちらかだけを設定することができます。それぞれ設定した場合も確認してみます。

fmSpecialEffectFlat:

境界部分を立体的に表示する(8)

fmSpecialEffectSunken:

境界部分を立体的に表示する(9)

このように SpecialEffect プロパティの値を変更することで、コントロールの境界部分を立体的に表示するかどうかを設定することができます。

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

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

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

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

オブジェクト.SpecialEffect [= fmSpecialEffect ]

対象のオブジェクトの SpecialEffect プロパティに対して、あらかじめ用意された値のいずれかを設定します。設定可能な値はこのページの最初の方を参照されてください。

サンプルコード

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

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

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

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

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

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

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

Private Sub UserForm_Initialize()
    Label1.SpecialEffect = fmSpecialEffectEtched
    TextBox1.SpecialEffect = fmSpecialEffectFlat
End Sub

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

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

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

ユーザーフォームが表示されました。追加されているラベルおよびテキストボックスに対して、境界線を立体的に表示するかどうかの設定が行えていることが確認できました。

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

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

-- --

Excel のユーザーフォームで SpecialEffect プロパティを使ってコントロールの境界部分を立体的に表示する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。