はじめに
VBAのユーザーフォームを作成する際、タイトルバーに表示されるテキスト(キャプション)やフォームの大きさ(幅と高さ)は、通常プロパティウィンドウで設定します。しかし、状況に応じてこれらの値を動的に変更したい場合があります。例えば、「開いたファイル名によってフォームのタイトルを変えたい」「処理するデータ量に応じてフォームのサイズを調整したい」といったケースです。
VBAコードを使えば、ユーザーフォームを表示する直前に、これらのプロパティを簡単に設定・変更することができます。この記事では、ユーザーフォームのタイトルとサイズをVBAで動的に設定するための基本的な方法を解説します。
タイトルとサイズを設定するVBAサンプルコード
このマクロは、DataEntryForm
という名前のユーザーフォームを対象に、タイトル、幅、高さを設定してから表示します。
通常、フォームを表示するマクロは、標準モジュールに記述します。
標準モジュールの完成コード
' ユーザーフォームのプロパティを設定して表示する
Sub ShowCustomizedForm()
' Withブロックで対象のフォームを明示
With DataEntryForm
' .Caption プロパティでタイトルを設定
.Caption = "データ入力フォーム Ver. 1.2"
' .Width プロパティでフォームの幅をポイント単位で設定
.Width = 300
' .Height プロパティでフォームの高さをポイント単位で設定
.Height = 250
' 設定を反映してフォームを表示
.Show
End With
End Sub
使い方
- VBEで、表示したいユーザーフォームの
(Name)
プロパティがDataEntryForm
であることを確認します。 - 標準モジュールに上記の
ShowCustomizedForm
マクロを貼り付けます。 - このマクロを実行すると、指定したタイトルとサイズでユーザーフォームが表示されます。
コードの解説
With DataEntryForm ... End With
With
ステートメントを使うことで、対象のオブジェクト(ここでは DataEntryForm
)を一度指定すれば、それ以降 .Caption
のように .
からプロパティ名を記述するだけで済み、コードがすっきりと読みやすくなります。
.Caption = "データ入力フォーム Ver. 1.2"
.Caption
プロパティは、フォームのタイトルバーに表示される文字列を制御します。ここに変数を使って .Caption = ActiveWorkbook.Name & " のデータ入力"
のように設定すれば、状況に応じた動的なタイトルを表示できます。
.Width = 300
と .Height = 250
.Width
: フォームの幅を設定します。.Height
: フォームの高さを設定します。
これらの単位はポイントです。1ポイントは約0.35mmに相当します。プロパティウィンドウで設定するのと同じ単位なので、最適なサイズをプロパティウィンドウで探してから、その数値をコードに反映させると簡単です。
まとめ
今回は、VBAコードを使ってユーザーフォームのタイトルとサイズを動的に設定する方法を解説しました。
- タイトル(キャプション)の変更は
.Caption
プロパティ - 幅の変更は
.Width
プロパティ - 高さの変更は
.Height
プロパティ
これらのプロパティを フォーム名.Show
の前に設定するだけで、より柔軟で見栄えの良いユーザーフォームを提供することができます。ぜひ、ご自身のツール開発に役立ててみてください。