ユーザーフォーム 第2回

ユーザーフォーム

ユーザーフォームにボタンを配置

 今回はユーザーフォームにボタンを追加してみます。

 まずは、オブジェクトを用意しましょう。
 前回と同じくプロジェクトウインドウから、UserForm1 と Module1 を追加します。

 UserForm1には、Initialize を追加しておきます。UserForm_Click()は今回は使わないので削除して構いません。UserForm1のコードは以下のようになります。

'/// UserForm1 に書くコード ////
Private Sub UserForm_Initialize()
    MsgBox "初期設定をします。"
End Sub

 Module1には以下のコードを追加しておきます。

'/// Module1 に書くコード ////
Sub test()
    UserForm1.Show
End Sub

ボタンを追加

 ボタンを追加するにはツールボックスを使用します。
 ツールボックスで「コマンドボタン」のアイコンを選択したら、

 ユーザーフォーム内でドラッグして大きさを決めます。大きさや位置は後からでも変更可能です。
 他のコントロールも同じように配置できます。

配置のコマンド

 メニューの「書式」には、「整列」「同じ大きさに揃える」などのコマンドが用意されています。今回は使いませんが、複数設定する場合は利用すると便利です。

 また、ユーザーフォームのグリッド(点)は、コントロールの位置決めるためのものです。
 「ツール」>「オプション」の「全般」タブでグリッドの間隔を設定できます。

ボタンのプロパティを変更

 ボタン(オブジェクト)の名前を変更したり、ボタン上の名前(キャプション)を設定してみます。
 ボタンは複数設定する場合も多いのでオブジェクト名の変更の仕方を覚えておきましょう。

ボタンのオブジェクト名を変更

 ボタンのオブジェクト名は自動で設定されますが、わかりやすいものに設定できます。
 日本語が混じっても大丈夫です。

 今回は「CommandButton1」から「終了Button」にしてみます。
 プロパティウインドウから、「(オブジェクト名)」を「終了Button」にしてみましょう。
 (もし字化けする場合は、一旦Excelシートに入力してから貼り付けるとうまくいくようです。)

キャプション名を変更

 キャプションとはボタン上に表示されている名前のことです。
 プロパティウインドウから、「Caption」を「終了」にしてみましょう。
 (ボタン表示部分をクリックしても変更できます。)

ボタンを押したときの処理

 ボタンを配置すれば、ユーザーフォームにボタンが配置された状態でちゃんと表示されますが、ボタンを押したときの処理を書いていないので、まだ何もできません。

 ボタンに対する処理はボタンが押された時のイベントを見つけてそこに書きます。

 フォームが表示されていればF7でコード画面に切り替えます。
 依然やったように、オブジェクトのドロップボックスを開くと先ほどオブジェクト名を変更した「終了Button」がありますので、こちらを選択します。
 すると 終了Button_Click()が自動的に書き込まれます。
 本来なら右のドロップボックスから選択します。他のイベントは以下のような感じですが、ボタンに関してはClick() 以外はほとんど使いません。
 
では、ボタンを押したときにユーザーフォームを閉じるコードを書きます。

'/// UserForm1 に書くコード ////
Private Sub 終了Button_Click()
    Unload Me
End Sub

 Module1のテストコード test() から実行してみてください。
 追加した終了ボタンでフォームが終了するはずです。

まとめ

今回はボタンの使い方を解説しました。

・ボタンの配置はツールボックスから行う
・プロパティウインドウで、オブジェクト名、キャプション名を変更
・イベントのClick()をコードウインドウのドロップボックスから選択する
・ボタンを押したときの処理を書く

以上のような手順で、ボタンの処理ができました。
尚、プロパティ値に関しては、プログラム上から設定したり変更したりできます。

最後に今回書いたコードです。確認用に使ってください。

'/// UserForm1 に書くコード ////
Private Sub UserForm_Initialize()
    MsgBox "初期設定をします。"
End Sub

Private Sub 終了Button_Click()
    Unload Me
End Sub
'/// Module1 に書くコード ////
Sub test()
    UserForm1.Show
End Sub
タイトルとURLをコピーしました