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