ユーザーフォームとかActiveXコントロールには『Tagプロパティ』という
空っぽのプロパティがあります。
もう、このプロパティの使い道は自由自在で、ユーザーフォームとかActiveX
コントロールには、値を格納するためのグローバル変数領域があらかじめ
用意されていると解釈すればわかりやすいと思います。
サンプルマクロでは、ユーザーフォームのどのコマンドボタンがクリック
されたかを判断するためにTagプロパティを使っています。
[OK]ボタンがクリックされると、「[OK]ボタンがクリックされました」、
[キャンセル]ボタンがクリックされると「[キャンセル]ボタンがクリック
されました」とメッセージボックスが表示されます。
ユーザーフォームに2つのコマンドボタンを配置してください。
1つは[OK]ボタン(CommandButton1)、
もう1つは[キャンセル](CommandButton2)ボタンです。
標準モジュールに次のプロシージャを作成します。
Sub ShowUserForm()
UserForm1.Show
If UserForm1.Tag = vbOK Then
MsgBox "[OK]ボタンがクリックされました"
ElseIf UserForm1.Tag = vbCancel Then
MsgBox "[キャンセル]ボタンがクリックされました"
End If
Unload UserForm1
End Sub
ユーザーフォームの[OK]ボタン(CommandButton1)の
Clickイベントプロシージャを次のように作成します。
Private Sub CommandButton1_Click()
Me.Tag = vbOK
Me.Hide
End Sub
ユーザーフォームの[キャンセル]ボタン(CommandButton2)の
Clickイベントプロシージャを次のように作成します。
Private Sub CommandButton2_Click()
Me.Tag = vbCancel
Me.Hide
End Sub
「ShowUserForm」を実行して確認してください。
Publicで宣言した変数を使う方法もありますが、
Tagプロパティは、ユーザーフォーム上の各コントロールに関する情報を
受け取るにはとても便利です。
|