教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】フォームを表示する直前に処理を実行する方法を教えて!

構文

構文は以下の通りです。

Private Sub UserForm_Initialize()
    ' ここに初期化のためのコードを記述します
End Sub

解説

フォームの初期化処理は、フォームを表示する直前に実行されるイベントプロシージャ「UserForm_Initialize」を使います。このイベントプロシージャは、フォームが表示される前に一度だけ実行されるため、初期化に必要なデータのセットアップやオブジェクトの初期設定などを行うことができます。

使い方

具体的な使い方を紹介します。

Private Sub UserForm_Initialize()
    ' 初期化処理を記述します
    ' 例:リストボックスにデータを追加する
    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

この例では、UserForm_Initializeイベントプロシージャ内で「データシート」という名前のワークシートからデータを取得し、リストボックスに項目を追加しています。A列の2行目から最終行までのデータをリストボックスに表示することになります。

まとめ

UserForm_Initializeイベントプロシージャを使用することで、フォームが表示される直前に必要な初期化処理を実行できます。これにより、ユーザーとの対話的なアプリケーションをより使いやすくします。是非活用してください。