コントロールの境界部分を立体的に表示する(SpecialEffectプロパティ)
ユーザーフォームに設置したコントロールの境界部分を影や浮き出しなどを使って立体的に表示する設定するには SpecialEffect プロパティを使用します。ここでは Excel のユーザーフォームで SpecialEffect プロパティを使ってコントロールの境界部分を立体的に表示する方法について解説します。
(Last modified: )
境界部分を立体的に表示する
コントロールの境界部分を立体的に表示するかどうか設定するには SpecialEffect
プロパティを使用します。例えばラベルの SpecialEffect
プロパティの値はデフォルトで「0 - fmSpecialEffectFlat」という値が設定されています。この値は境界部分を立体的に表示しません。なおデフォルトの値はコントロールの種類によって異なります。
境界を立体的に表示するかどうか設定するには SpecialEffect
プロパティの値のところに表示されているドロップダウンメニューをクリックし、設定したい値をクリックしてください。
選択可能な値は次の通りです。
定数 | 値 | 説明 |
---|---|---|
fmSpecialEffectFlat | 0 | 境界は平面的に表示されます |
fmSpecialEffectRaised | 1 | オブジェクトの上端と左端が強調され、下端と右端に影が付きます |
fmSpecialEffectSunken | 2 | オブジェクトの上辺と左辺には影が付けられ、下辺と右辺は強調表示されます |
fmSpecialEffectEtched | 3 | 境界線がコントロールの周囲に彫り込まれているように見えます |
fmSpecialEffectBump | 6 | オブジェクトの下端と右端に浮き出しが適用され、上端と左端は平面的に表示されます |
ラベルとイメージのデフォルト値は fmSpecialEffectFlat
です。ラベルとイメージ以外のデフォルト値は fmSpecialEffectSunken
です。
チェックボックスとオプションボタンは fmSpecialEffectFlat
または fmSpecialEffectSunken
のみ選択できます。トグルボタンは SpecialEffect
プロパティが無効になっており値を設定することができません。
それではラベル、テキストボックス、コンボボックス、イメージの SpecialEffect
プロパティの値を変更した場合にどのように表示されるのかを確認してみます。
fmSpecialEffectFlat:
fmSpecialEffectRaised:
fmSpecialEffectSunken:
fmSpecialEffectEtched:
fmSpecialEffectBump:
チェックボックスとオプションボタンについては fmSpecialEffectFlat
または fmSpecialEffectSunken
のどちらかだけを設定することができます。それぞれ設定した場合も確認してみます。
fmSpecialEffectFlat:
fmSpecialEffectSunken:
このように SpecialEffect
プロパティの値を変更することで、コントロールの境界部分を立体的に表示するかどうかを設定することができます。
コントロールの境界線の表示については SpecialEffect
プロパティと BorderStyle
プロパティの値はどちらかのみ設定することができます。どちらか一方のプロパティに 0 以外の値を指定すると、もう一方のプロパティの値が 0 に設定されます。 BorderStyle
プロパティの使い方については「コントロールの枠線を設定する(BorderStyle,BorderColorプロパティ)」を参照されてください。
VBAのプログラムの中でSpecialEffectプロパティを設定する
プロパティウィンドウを使って SpecialEffect
プロパティの値を変更する代わりに、 VBA のコードを記述して SpecialEffect
プロパティの値を変更することもできます。
プログラムの中で SpecialEffect
プロパティを設定する場合は次の書式を使用します。
オブジェクト.SpecialEffect [= fmSpecialEffect ]
対象のオブジェクトの SpecialEffect
プロパティに対して、あらかじめ用意された値のいずれかを設定します。設定可能な値はこのページの最初の方を参照されてください。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中で SpecialEffect
プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize
イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click
イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize
イベントに対するイベントプロシージャを使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。
Private Sub UserForm_Initialize() Label1.SpecialEffect = fmSpecialEffectEtched TextBox1.SpecialEffect = fmSpecialEffectFlat End Sub
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。追加されているラベルおよびテキストボックスに対して、境界線を立体的に表示するかどうかの設定が行えていることが確認できました。
このように VBA のプログラムの中で SpecialEffect
プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで SpecialEffect プロパティを使ってコントロールの境界部分を立体的に表示する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。