即効テクニック |
ユーザーフォームとか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プロパティは、ユーザーフォーム上の各コントロールに関する情報を受け取るにはとても便利です。