構文
構文は以下の通りです。
Private Sub UserForm_Initialize()
' ここに初期化のためのコードを記述します
End Sub
' ここに初期化のためのコードを記述します
End Sub
解説
フォームの初期化処理は、フォームを表示する直前に実行されるイベントプロシージャ「UserForm_Initialize」を使います。このイベントプロシージャは、フォームが表示される前に一度だけ実行されるため、初期化に必要なデータのセットアップやオブジェクトの初期設定などを行うことができます。
使い方
具体的な使い方を紹介します。
Private Sub UserForm_Initialize()
' 初期化処理を記述します
' 例:リストボックスにデータを追加する
ListBox1.AddItem "項目1"
ListBox1.AddItem "項目2"
ListBox1.AddItem "項目3"
End Sub
' 初期化処理を記述します
' 例:リストボックスにデータを追加する
ListBox1.AddItem "項目1"
ListBox1.AddItem "項目2"
ListBox1.AddItem "項目3"
End Sub
プログラミング例
以下に、プログラミング例を紹介します。
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Dim lastRow As Long
Dim dataRange As Range
Dim cell As Range
' ワークシートの参照を取得
' 「データシート」は適宜シート名を変更してください
Set ws = ThisWorkbook.Sheets("データシート")
' データシートの範囲からデータを取得してリストボックスに表示する
' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' データが格納されている範囲を指定
Set dataRange = ws.Range("A2:A" & lastRow)
' 取得したデータをリストボックスに表示
For Each cell In dataRange
' リストボックスに項目を追加
ListBox1.AddItem cell.Value
Next cell
End Sub
Dim ws As Worksheet
Dim lastRow As Long
Dim dataRange As Range
Dim cell As Range
' ワークシートの参照を取得
' 「データシート」は適宜シート名を変更してください
Set ws = ThisWorkbook.Sheets("データシート")
' データシートの範囲からデータを取得してリストボックスに表示する
' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' データが格納されている範囲を指定
Set dataRange = ws.Range("A2:A" & lastRow)
' 取得したデータをリストボックスに表示
For Each cell In dataRange
' リストボックスに項目を追加
ListBox1.AddItem cell.Value
Next cell
End Sub
この例では、UserForm_Initializeイベントプロシージャ内で「データシート」という名前のワークシートからデータを取得し、リストボックスに項目を追加しています。A列の2行目から最終行までのデータをリストボックスに表示することになります。
まとめ
UserForm_Initializeイベントプロシージャを使用することで、フォームが表示される直前に必要な初期化処理を実行できます。これにより、ユーザーとの対話的なアプリケーションをより使いやすくし、より洗練されたエクセルマクロを作成することが可能です。