コントロールの背景を透明に設定する(BackStyleプロパティ)
コントロールの背景色はデフォルトでは透明ではありませんが、 BackStyle プロパティの値を変更することで透明にすることができます。ここでは Excel のユーザーフォームで BackStyle プロパティを使ってコントロールの背景を透明に設定する方法について解説します。
(Last modified: )
コントロールの背景を透明に設定する
デフォルトの設定ではユーザーフォームの背景色とコントロールの背景色が同じになっている場合が多いので、それぞれのコントロールの背景が透明かどうか分かりません。
ただユーザーフォームの背景色を変更してみると、それぞれのコントロールの背景は透明ではないことが確認できます。(コントロールの背景色を設定する方法については「コントロールの文字色と背景色を設定する(ForeColor,BackColorプロパティ)」を参照されてください)。
コントロールの背景を透明に設定するには BackStyle
プロパティを使用します。例えばラベルの BackStyle
プロパティの値はデフォルトで「1 - fmBackStyleOpaque」という値が設定されています。
背景を透明にするには BackStyle
プロパティの値のところに表示されているドロップダウンメニューをクリックし、「0 - fmBackStyleTransparent」を選択してください。
ラベルの背景が透明に設定されました。
このように BackStyle
プロパティの値を変更することで、コントロールの背景を透明に設定することができます。
VBAのプログラムの中でBackStyleプロパティを設定する
プロパティウィンドウを使って BackStyle
プロパティの値を変更する代わりに、 VBA のコードを記述して BackStyle
プロパティの値を変更することもできます。
プログラムの中で BackStyle
プロパティを設定する場合は次の書式を使用します。
オブジェクト.BackStyle [= fmBackStyle ]
対象のオブジェクトの BackStyle
プロパティに対して背景の状態を表す値を代入します。代入可能な値は次の通りです。
定数 | 値 | 説明 |
---|---|---|
fmBackStyleTransparent | 0 | 背景は透明になります。 |
fmBackStyleOpaque | 1 | 背景は不透明になります。 |
背景を透明に設定したい場合は、値として fmBackStyleTransparent
を設定してください。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中で BackStyle
プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize
イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click
イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize
イベントに対するイベントプロシージャを使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。
Private Sub UserForm_Initialize() Label1.BackStyle = fmBackStyleTransparent CommandButton1.BackStyle = fmBackStyleOpaque End Sub
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。追加されているラベルの背景は透明になり、コマンドボタンの背景は不透明なままになっていることが確認できます。
このように VBA のプログラムの中で BackStyle
プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで BackStyle プロパティを使ってコントロールの背景を透明に設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。