UserForm_Initialize
読みは「ユーザーフォームイニシャライズ」というちょっとかっこいい感じの名前です。
ユーザーフォームを起動する時の初期設定をするようなものですね。
では早速前回使ったユーザーフォームを使ってUserForm_Initializeを設定してみましょう。
まずはコードを開いて上の方にある(General)と書いてある所の右側の下三角印をクリックしてみましょう。
そうすると作ったユーザーフォームのパーツのオブジェクト名が出てきますのでその中から「UserForm」を選択します。
すると勝手に
Private Sub UserForm_Click() End Sub
と勝手にプロシージャが作られます。
今回はこれは使わないのでそのままでもいいですし、消しちゃっても構いません。
今度は(General)と書いていた所の右側にあるClickと書いてある所の右側の下三角をクリックして表示されたリストの中から「Initialize」を選択します。
Private Sub UserForm_Initialize() End Sub
が出てきましたね?これが「UserForm_Initialize」です。
この中にユーザーフォームが立ち上がる時の処理を記述していく事になります。
Labelのキャプションを変更してみよう
Private Sub UserForm_Initialize() Me.Label1.Caption = "イニシャライズ" End Sub
今回はLabel1のキャプションだけ変更してみましょう。
出来たら再生ボタン、もしくはF5ボタンでユーザーフォームを立ち上げてみて下さい。
Label1だけキャプションが変わりましたね。
ループで連続取得
では前回やったControlsを活かしてセルに入力された値を頂いてLabelのキャプションをループしながら設定していきましょう。
Private Sub UserForm_Initialize() Dim i As Long 'カウンタ For i = 1 To 5 Me.Controls("label" & i).Caption = Range("e" & i).Value Next End Sub
仮にE列からLabelのキャプションを頂くとしたらこうなりますね。
ではユーザーフォームを立ち上げてみましょう。
無事、Labelのキャプションが「E列から1~5」になりましたね。
LabelやTextBoxなど操作・設定する対象が複数ある場合はこの様にInitializeでループしながらキャプション等を設定していくと非常に便利です。
まとめ
- ユーザーフォームイニシャライズはユーザーフォームが立ち上がる時の初期設定
- キャプションは全部手入力で指定するよりデータベース等から一括で取得した方が楽
- Controlsを使用すればループはもちろん使えます。
では次回はもう少し実践に近づけてユーザーフォームを作っていきたいと思います。