フォームを表示する直前に処理を実行するには、フォームのInitializeイベントプロシージャを使用します。その使い方について説明します。
【目次】
構文
イベントプロシージャの記述方法は以下の通りです。
=======================================================
Private Sub [オブジェクト名]_Initialize()
[実行する処理内容]
End Sub
=======================================================
[説明]:
フォームが表示される直前に処理を実行させるイベントプロシージャはInitializeプロシージャを使用します。[オブジェクト名]にはフォームのオブジェクト名を記述します。また、[実行する処理内容]にはフォームを表示する直前で実行する処理内容を記述します。内容を纏めると、「[オブジェクト名]で指定したフォームを表示する場合、事前に[実行する処理内容]を実行して下さい。」との意味になります。
[記述例]:
Private Sub UserForm_Initialize()
TextBox1 = ""
TextBox2 = ""
ComboBox1.Clear
End Sub
[サンプル画面]:
今回は以下の画面(サンプル画面)を使用して処理を実行する方法について説明します。
※サンプル画面の作成方法については、こちらを参考にして下さい。
サンプル画面の各コントロールのオブジェクト名は以下の内容となります。
Initializeイベントプロシージャの記述方法
(1)VBE(VBA記述画面)を開き、フォームにある上記のUserForm1フォームをダブルクリックします。
(2)UserForm1フォームが表示されるので、フォーム上の任意の場所で右クリックします。そうすると小窓が開くので、「コードの表示」を選択します。
※この時点で「UserForm_Click」イベントプロシージャが表示されます。(これは自動的に作成される仕組みとなっているようです)
(3)オブジェクトボックスの▼ボタンをクリックします。
(4)プルダウン一覧の中から「UserForm」を選択します。
(5)プロシージャボックスの▼ボタンをクリックします。
(6)プルダウン一覧の中から「Initialize」を選択します。
(7)「UserForm_Initialize」イベントプロシージャが表示されます。
※このUserForm_Initializeイベントプロシージャの中に実行する処理内容を記述する事で、フォームを表示する直前に処理を実行する事ができます。これ以降は実行する処理例について紹介します。
(例1)フォームの各コントロールをクリアする
フォームの各コントロールをクリアする記述は以下の通りとなります。
[記述例]:
-------------------------------------------------
Private Sub UserForm_Initialize()
TextBox1 = ""
TextBox2 = ""
ComboBox1.Clear
End Sub
-------------------------------------------------
内容を説明すると、
「UserForm1フォームを表示する直前に、TextBox1(職番の右側にあるテキストボックス)、TextBox2(氏名の右側にあるテキストボックス)、ComboBox1(部署の右側にあるテキストボックス)をクリアして下さい。」
との意味になります。
[実行例]:
TextBox1(職番の右側にあるテキストボックス)、TextBox2(氏名の右側にあるテキストボックス)、ComboBox1(部署の右側にあるテキストボックス)がクリアされてフォームが表示されます。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
(例2)フォームの各コントロールに初期値をセットする
フォームの各コントロールに初期値をセットする記述は以下の通りとなります。
[記述例]:
-------------------------------------------------
Private Sub UserForm_Initialize()
TextBox1 = "職番を入力"
TextBox2 = "氏名を入力"
ComboBox1.AddItem "総務"
ComboBox1.AddItem "経理"
ComboBox1.AddItem "資材"
End Sub
-------------------------------------------------
内容を説明すると、
「UserForm1フォームを表示する直前に、TextBox1(職番の右側にあるテキストボックス)に”職番を入力”、TextBox2(氏名の右側にあるテキストボックス)に”氏名を入力”、ComboBox1(部署の右側にあるテキストボックス)に”総務・経理・資材”をセットして下さい。」
との意味になります。
[実行例]:
TextBox1(職番の右側にあるテキストボックス)に”職番を入力”、TextBox2(氏名の右側にあるテキストボックス)に”氏名を入力”、ComboBox1(部署の右側にあるテキストボックス)に”総務・経理・資材”がセットされてフォームが表示されます。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
(例3)フォームのボタンを非表示にする
フォームのボタンを非表示にする記述は以下の通りとなります。
[記述例]:
-------------------------------------------------
Private Sub UserForm_Initialize()
CommandButton1.Visible = False
End Sub
-------------------------------------------------
内容を説明すると、
「UserForm1フォームを表示する直前に、CommandButton1(<保存>ボタン)を非表示にして下さい。」
との意味になります。
[実行例]:
CommandButton1(<保存>ボタン)が非表示となりフォームが表示されます。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
Initializeイベントプロシージャの記述方法についての説明は以上です。
おわりに
今回はフォームを表示する直前に処理を実行する方法について説明しました。フォームを表示する直前に処理したい内容については、上記例以外にも多々あると思います。今回の説明を参考に活用してみて下さい。また、Initializeイベントと同じくらい使用頻度の高いイベントにActivateイベントがあります。各々の違いとしてInitializeイベントはフォームを表示する前に実行するイベントですが、Activateイベントはユーザーフォームがアクティブになった時に実行されるイベントです。混同されやすいので注意して下さい。