Tagプロパティの代わりにオリジナルのプロパティを使う
 ユーザーフォーム上のコントロールから情報を受け取る際に、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するという一見面倒くさい処理をしているのは、
そういった理由からです。

Excel97



戻る


Excel Word Access VBA! モーグ