プロパティを設定する方法(ラベル)
今回は前回のプログラムにラベルを追加します。ラベルとは、フォーム上に配置する文字列の事です。ラベルの文字列の設定(プロパティ値)をプロジェクトウインドウとプログラムで変更する方法を学びます。
プログラムは前回の物をそのまま使用します。
フォームにラベルを配置
フォームにラベルを配置するにはツールボックスを使います。ボタンの配置と同じです。

ボタンと同様にオブジェクト名とキャプション名を変更できます。ラベルの場合はキャプション名が主役になります。
オブジェクト名に関しては、今回は変更せずに使います。(Label1)
キャプションは、表示させたい文字列を書きます。今回は「メッセージ」としました。
プロパティウインドウから、「Caption」を「メッセージ」にします。
せっかくなのでFontも変更して文字の大きさなども変更してみましょう。
プロパティウインドウから、「Font」をクリックすると右側にオプション選択ボタンが出ますのでクリックしてフォントや文字の大きさなどを変更します。


イベントでラベルの文字を変更する
ではプロパティ値をプログラムから変更してみましょう。ラベルの文字列(Caption)を変更してみます。ラベルの文字列を変更するプログラムは以下の通りです。
これで日本語の「メッセージ」から英語の「Message」に変わるはずです。
Label1.Caption = "Message"
このコードをどのタイミングで実行するかが問題です。今回は、フォームがクリックされた時のイベントで変更するようにしてみましょう。
フォームがクリックされた時のイベントは、UserForm_Click()ですね。
コードウインドウのドロップボックスからUserForm1を選択して、Clickを選択します。
ここに先ほどのコードを書きます。一応わかりやすいようにメッセージボックスも表示させてみます。
'/// UserForm1 ////
Private Sub UserForm_Click()
MsgBox "フォームがクリックされました。"
Label1.Caption = "Message"
End Sub
これで実行してみましょう。実行は、前回と同じように Module1 の test() を実行します。
プロシージャ内にカーソルを置いてF5で実行できます。
前回のコードを書いていない方は、以下のコードを標準モジュールに書いてください。
'/// Module1 に書くコード ////
Sub test()
UserForm1.Show
End Sub
実行して動作を確認する
何回か実行してみてフォーム上をクリックしてみてください。
ラベルの付近では反応しません。これはラベルがフォームの上に張り付いているためです。
ラベル上のクリックに反応するためには、そのイベントに書く必要があります。
ラベルのクリックイベントを追加
ではLabel1がクリックされた時のイベントプロシージャにコードを書きます。
UserForm1のコード画面にして、コードウインドウのドロップボックスからLabel1を選択して、Clickを選択します。
自動でイベントプロシージャが記述されますので、内部に以下のようなコードを書いて実行してみましょう。
'/// UserForm1 ////
Private Sub Label1_Click()
MsgBox "ラベルがクリックされました。"
Label1.Caption = "Label Message"
End Sub
動作としては、ラベル付近では「Label Message」、フォーム上では「Message」と表示されるはずです。尚、一旦フォームを閉じて再度起動すると、プロパティウインドウで設定した値(メッセージ)が表示されるはずです。
Initialize(初期化)イベントの処理を追加
更にInitialize(初期化)イベントにも処理を追加してみましょう。やり方は前回と同じで、UserForm1のコードウインドウから、ドロップボックスで UserForm、Initialize と選択してください。 自動でイベントプロシージャが記述されるので内部は以下のようにします。
'/// UserForm1 ////
Private Sub UserForm_Initialize()
MsgBox "初期設定をします。"
Label1.Caption = ""
End Sub
ここではキャプションを空白に設定しましたので、今度は起動直後にはラベルに文字は表示されません。プロパティウインドウで設定しておいたキャプション「メッセージ」も、初期化の Initialize が実行された時点で空白に書き換えられます。
ですから、「メッセージ」という文字は一度も見る事はなくなってしまいます。
ところで、今回 Font に関しては変化がありませんでした。これは、プロパティウインドウで最初に設定して以来、変更していないからです。
ラベルに関しては、実際にはキャプションを頻繁に変更する事はなく、プロパティウインドウで設定した後はそのまま表示し続けるケースがほとんどです。
まとめ
今回はラベルのキャプションを通じてイベントをいろいろ試してみました。イベントに慣れていない方も何となくイメージが湧いてきたのではないでしょうか。
イベントはそれぞれのフォームやコントロールそれぞれに存在しています。
これらは自分で用意するものではなくシステムから送られてくるイベントに対して反応する形でプログラムを書きます。
イベントはExcel本体にもいろいろあります。「ブックを開いた時」「閉じる前」「シートを変更する時」など様々です。
ただ、全てのイベントを覚える必要はありません。使うイベントというのは大体決まっていますので、それらを押さえておけば大抵はやりたいことができるでしょう。
ユーザーフォームのプログラムは中級程度の扱いですが、簡単なものから慣れていけばきっと書けるようになります。
最後に、これまでのプログラムコードです。
'/// UserForm1 ////
Private Sub 終了Button_Click()
Unload Me
End Sub
Private Sub UserForm_Click()
MsgBox "フォームがクリックされました。"
Label1.Caption = "Message"
End Sub
Private Sub Label1_Click()
MsgBox "ラベルがクリックされました。"
Label1.Caption = "Label Message"
End Sub
Private Sub UserForm_Initialize()
MsgBox "初期設定をします。"
Label1.Caption = ""
End Sub
'/// Module1 ////
Sub test()
UserForm1.Show
End Sub
ユーザーフォームの使い方
・ユーザーフォームのプログラミング(準備編)
・ユーザーフォーム 第1回(起動と終了)
・ユーザーフォーム 第2回(ボタン)
・ユーザーフォーム 第3回(ラベル)
・ユーザーフォーム 第4回(テキストボックス)
・ユーザーフォーム 第5回(モーダル・モードレス)
・ユーザーフォーム 第6回(チェックボックス)
・ユーザーフォーム 第7回(オプションボタン)
・ユーザーフォーム 第8回(コンボボックス)
・ユーザーフォーム 第9回(リストボックス)
・ユーザーフォーム 第10回(リストボックス複数選択)
・ユーザーフォーム 第11回(タブストップ)
・ユーザーフォーム 第12回(スピンボタン)