ユーザーフォームのUserForm_Initializeの使い方についてご紹介します。
- フォームを開いたときに初期値を設定したい
- コンボボックスやリストを自動で読み込みたい
- 毎回同じ準備処理を実行したい
このような場合は、UserForm_Initialize を使うことで解決できます。
フォームが開いたタイミングで自動的に処理を実行できる、非常に重要なイベントです。
この記事では、Initializeイベントの基本から実務での使い方まで、初心者向けに分かりやすく解説します。
この記事でできること
- UserForm_Initializeの役割が分かる
- フォーム起動時に処理を実行できる
- 初期値やリスト設定ができる
- 実務で使えるパターンが分かる
UserForm_Initializeとは?
フォームが表示される直前に自動実行されるイベントです。
つまり、
- UserForm.Show を実行すると
- → Initialize が自動で動く
- → その後フォームが表示される
という流れになります。
基本:Initializeの書き方
ユーザーフォームのコードに次のように書きます。
Private Sub UserForm_Initialize()
MsgBox "フォームが起動しました"
End Sub
これでフォーム表示時にメッセージが出ます。
よくある使い方①:テキストボックスの初期値設定
Private Sub UserForm_Initialize()
Me.TextBox1.Value = "初期値"
End Sub
フォームを開いた瞬間に値が入ります。
よくある使い方②:セルの値を表示
Private Sub UserForm_Initialize()
Me.TextBox1.Value = Range("A1").Value
End Sub
Excelの内容をフォームに表示できます。
よくある使い方③:コンボボックスにリストを設定
Private Sub UserForm_Initialize()
Me.ComboBox1.AddItem "未処理"
Me.ComboBox1.AddItem "進行中"
Me.ComboBox1.AddItem "完了"
End Sub
フォーム表示時に選択肢が自動で設定されます。
よくある使い方④:リストボックスにデータを読み込む
Private Sub UserForm_Initialize()
Me.ListBox1.List = Range("A1:A5").Value
End Sub
一覧表示系の処理はInitializeが基本です。
よくある使い方⑤:ラベルにメッセージ表示
Private Sub UserForm_Initialize()
Me.Label1.Caption = "処理を選択してください"
End Sub
InitializeとActivateの違い
似たイベントに Activate があります。
| イベント | 実行タイミング |
|---|---|
| Initialize | フォーム生成時(1回だけ) |
| Activate | フォームがアクティブになるたび |
基本は Initializeを使えばOK です。
Initializeが動かない原因
① コードを書く場所が違う
標準モジュールではなく、ユーザーフォームのコードに書いてください。
② イベント名が間違っている
正しくは次です。
Private Sub UserForm_Initialize()
③ フォームをShowしていない
UserForm1.Show
これが実行されていないと動きません。
実務での活用例
- 入力フォームの初期化
- マスタデータの読み込み
- 既存データの表示
- UIの初期設定
フォーム系の処理はほぼInitializeから始まります。
まとめ
- Initializeはフォーム起動時に自動実行される
- 初期値・リスト設定に使う
- 基本はここに処理を書く
- フォーム開発の土台となる重要イベント
UserForm_Initializeを使いこなせるようになると、ユーザーフォームの完成度が一気に上がります。
フォーム処理の基本中の基本なので、ぜひしっかり理解しておきましょう。


コメント