ユーザーフォームを開いた時にコードを実行させる方法を備忘録も兼ねて紹介したいと思います。
ユーザーフォームを開いた時にコードを実行させる方法
ユーザーフォームを開いた時にコードを実行するにはUserForm_Initialize()
を使用します。
プロシージャ(Sub ~
)のように記述し、その中に開いた時に実行させたい処理を記述する感じです。
Private Sub UserForm_Initialize()
End Sub
使用例
ユーザーフォームの左上の見出し名を変える
まずユーザーフォームの見出し名を変える方法です。
見出し名とはユーザーフォームの左上に書いているやつのことです。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-14.png)
この見出し名を変更するには【ユーザーフォームのオブジェクト名】.Caption
を使用します。
Private Sub UserForm_Initialize()
UserForm1.Caption = "はりぼなブログ"
End Sub
実行すると見出し名が「はりぼなブログ」に変更されています。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-15.png)
ちなみに余談ですが、プロパティウィンドウからでも見出し名の変更は可能です。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-16.png)
コンボボックスにシートの内容を入れる
次にコンボボックスにシートの内容を格納する方法です。
コンボボックスに値を追加するには、【コンボボックスのオブジェクト名】.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都道府県が格納されている場合を紹介します。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-9-1024x861.png)
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-10.png)
この状態でユーザーフォームを実行するとコンボボックスに47都道府県が格納されます。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-11.png)
そしてコンボボックスから都道府県を選択して「表示」をクリックすると、メッセージボックスに選択した都道府県名が表示されます。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-12.png)
ポイントはDo Until IsEmpty(targetSht.Range("A1").Offset(i, 0))~Loop
で、A列でブランクのセルが見つかるまでループ処理をしているので、A列のデータ件数に応じてコンボボックスに入る数が変わるようになります。
![](https://masashi-blog418.com/wp-content/uploads/2023/12/image-13.png)
まとめ
今回はユーザーフォームを開いた時にコードを実行させる方法を紹介しました。
開いた時にコードを実行させたい時はUserForm_Initialize()
を使用するようにしましょう!
このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント