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