HOME > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > Tagプロパティの代わりにオリジナルのプロパティを使う

即効テクニック

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

Tagプロパティの代わりにオリジナルのプロパティを使う

(Excel 97)
ユーザーフォーム上のコントロールから情報を受け取る際に、Tagプロパティという空っぽのプロパティを利用する方法があります。
しかし、Tagプロパティは1個しかありませんので、既に何らかの理由で使っている場合も考えられます。
そういう場合にはオリジナルのプロパティを使うとTagプロパティと同じようなことができます。
自分で新たにTagプロパティを作ると考えてください。

-------標準モジュール---------
Sub ShowUserForm()
    UserForm1.Show

    If UserForm1.CmdResult = vbOK Then
        MsgBox "[OK]ボタンがクリックされました"
    ElseIf UserForm1.CmdResult = vbCancel Then
        MsgBox "[キャンセル]ボタンがクリックされました"
    End If

    Unload UserForm1
End Sub
-------UserForm1モジュール---------
(Genenral)-(Declaration)
ユーザーフォームの押下ボタンの判定
Private intResult As Integer
オリジナルプロパティ(コマンドボタンの判定)
Public Property Get CmdResult() as integer
    CmdResult = intResult
End Propaery
[OK]ボタンをクリック
Private Sub cmdOK_Click()
    intResult = vbOK
    Me.Hide
End Sub
[キャンセル]ボタンをクリック
Private Sub cmdCancel_Click()
    intResult = vbCancel
    Me.Hide
End Sub
以上で、オリジナルプロパティで呼び出し元のプロシージャに値が返ります。
Tagプロパティやオリジナルプロパティを使う時に注意する点としてはUserFormをUnloadする前にプロパティの値を確認するということです。
UserFormで保持している値を使用するのでUnloadするとプロパティの値が消滅してしまいます。
コマンドボタンのクリック時にHideで非表示にしてモジュールの方でプロパティを参照したあとにUnloadするという一見面倒くさい処理をしているのは、そういった理由からです。