【Excel VBA】ユーザーフォームを開いた時にコードを実行させる方法【Initialize】

Excel
スポンサーリンク

ユーザーフォームを開いた時にコードを実行させる方法を備忘録も兼ねて紹介したいと思います。

スポンサーリンク

ユーザーフォームを開いた時にコードを実行させる方法

ユーザーフォームを開いた時にコードを実行するにはUserForm_Initialize()を使用します。

プロシージャ(Sub ~)のように記述し、その中に開いた時に実行させたい処理を記述する感じです。

Private Sub UserForm_Initialize()
    
End Sub
スポンサーリンク

使用例

ユーザーフォームの左上の見出し名を変える

まずユーザーフォームの見出し名を変える方法です。
見出し名とはユーザーフォームの左上に書いているやつのことです。

この見出し名を変更するには【ユーザーフォームのオブジェクト名】.Captionを使用します。

Private Sub UserForm_Initialize()
    UserForm1.Caption = "はりぼなブログ"
End Sub

実行すると見出し名が「はりぼなブログ」に変更されています。

ちなみに余談ですが、プロパティウィンドウからでも見出し名の変更は可能です

コンボボックスにシートの内容を入れる

次にコンボボックスにシートの内容を格納する方法です。
コンボボックスに値を追加するには、【コンボボックスのオブジェクト名】.AddItemを使用します。

Private Sub UserForm_Initialize()
    
    Dim targetSht               As Worksheet
    Dim i                       As Long
    
    Application.ScreenUpdating = False
    
    Set targetSht = ThisWorkbook.Worksheets("データ")
    
    i = 0
    Do Until IsEmpty(targetSht.Range("A1").Offset(i, 0))
        With ComboBox1
            .AddItem targetSht.Range("A1").Offset(i, 0)
        End With
        i = i + 1
    Loop
    
    Application.ScreenUpdating = True
    
End Sub

Private Sub CommandButton1_Click()
    MsgBox ComboBox1.Value
End Sub

例として「データ」シートのA列に47都道府県が格納されている場合を紹介します。

この状態でユーザーフォームを実行するとコンボボックスに47都道府県が格納されます。

そしてコンボボックスから都道府県を選択して「表示」をクリックすると、メッセージボックスに選択した都道府県名が表示されます。

ポイントはDo Until IsEmpty(targetSht.Range("A1").Offset(i, 0))~Loopで、A列でブランクのセルが見つかるまでループ処理をしているので、A列のデータ件数に応じてコンボボックスに入る数が変わるようになります。

「沖縄県」だけ削除した場合、鹿児島県まで(46件)コンボボックスに入る
スポンサーリンク

まとめ

今回はユーザーフォームを開いた時にコードを実行させる方法を紹介しました。

開いた時にコードを実行させたい時はUserForm_Initialize()を使用するようにしましょう!

このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

タイトルとURLをコピーしました