HOME > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > Tagプロパティを利用してユーザーフォームからの情報を受け取る

即効テクニック

ユーザーフォーム関連のテクニック

Tagプロパティを利用してユーザーフォームからの情報を受け取る

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