はじめに
VBAのユーザーフォームで、ラベルは単なる静的なテキストを表示するだけでなく、ツールのタイトルや、処理の状況を伝えるステータスメッセージとして重要な役割を果たします。
通常、ラベルの書式はプロパティウィンドウで設定しますが、VBAコードで動的に変更することで、よりリッチで分かりやすいユーザーインターフェースを作成できます。例えば、処理が成功したらラベルを緑色に、失敗したら赤色に変える、といった表現が可能です。
この記事では、ユーザーフォームのラベルコントロールの様々な書式(表示テキスト、フォント、文字色、背景色など)をVBAで設定するための基本的な方法を、プロパティごとに分かりやすく解説します。
ラベルの書式を設定するVBAサンプルコード
このマクロは、DisplayForm
という名前のユーザーフォーム上にある TitleLabel
という名前のラベルを、見出しとして見栄え良く整形します。
このコードは、フォームが初期化される UserForm_Initialize()
イベント内や、フォームを表示するマクロの中で フォーム名.Show
の前に記述します。
ユーザーフォームのコード
' フォームが初期化されるときに実行されるイベント
Private Sub UserForm_Initialize()
' Withブロックで対象のラベルを明示
With Me.TitleLabel
' .Caption: 表示するテキストを設定
.Caption = "ようこそ!"
' .Fontオブジェクト: フォント関連の書式を設定
.Font.Name = "游ゴシック" ' フォント名を指定
.Font.Bold = True ' 太字にする
.Font.Size = 16 ' フォントサイズをポイントで指定
' .ForeColor: 文字の色を設定
.ForeColor = RGB(255, 255, 255) ' RGB関数で白色を指定
' .BackColor: 背景の色を設定
.BackColor = RGB(6, 128, 67) ' RGB関数で濃い緑色を指定
' .TextAlign: テキストの水平方向の配置を設定
.TextAlign = fmTextAlignCenter ' 中央揃え
' .Height / .Width: コントロールのサイズを設定
.Height = 30
.Width = 250
End With
End Sub
実行前の準備
DisplayForm
という名前のユーザーフォームを作成します。- フォーム上に「ラベル」コントロールを配置し、プロパティウィンドウで
(Name)
をTitleLabel
に変更します。 - フォームのコードモジュールに上記の
UserForm_Initialize
プロシージャを貼り付け、フォームを表示すると、デザインが適用されたラベルが表示されます。
コード(プロパティ)の解説
.Caption
ラベルに表示されるテキストそのものを設定します。 "処理が完了しました"
のように、状況に応じて文字列を動的に変更できます。
.Font
フォントに関する設定は、.Font
オブジェクトを通じて行います。
.Font.Name
:"MS Pゴシック"
や"Yu Gothic UI"
など、PCにインストールされているフォント名を文字列で指定します。.Font.Bold
:True
で太字、False
で標準になります。.Font.Size
: フォントの大きさをポイント単位で指定します。
.ForeColor
と .BackColor
.ForeColor
: 前景色、つまり文字の色を設定します。.BackColor
: 背景色を設定します。 色の指定にはvbRed
やvbBlue
といったVBAの定数も使えますが、RGB(赤, 緑, 青)
関数を使うと、より多彩な色を表現できます。各値は0から255の範囲で指定します。
.TextAlign
ラベル内のテキストの水平方向の配置を設定します。
fmTextAlignLeft
: 左揃え(デフォルト)fmTextAlignCenter
: 中央揃えfmTextAlignRight
: 右揃え
fm...
で始まるこれらの値は、fm20.dll
ライブラリで定義されているVBAの定数です。
まとめ
今回は、VBAコードを使ってユーザーフォームのラベルの書式を自由に設定する方法を解説しました。
.Caption
: 表示テキスト.Font
: フォントの種類、太さ、サイズ.ForeColor
: 文字色.BackColor
: 背景色.TextAlign
: 水平配置
これらのプロパティを組み合わせることで、単調になりがちなユーザーフォームを、視覚的に分かりやすく、デザイン性の高いものに仕上げることができます。ぜひ、ユーザーにとって使いやすい画面作りにご活用ください。