0

そのため、ワークブックにユーザーフォームが表示されるたびにイベントを開始しようとしています。それらはすべて同じことを行いますが、それぞれに対して同じアクティビティをコーディングする必要はありませんUserFormX.Show

私はそれらが次のようなものであることを読みUserForm_Activate()UserForm_Initialize()理解しました。

Private Sub UserForm_Activate()
    ''Do some stuff
End Sub

UserFormまた、それがフォーム自体の名前であるべきであることも理解しています。アクティブ化/表示されているユーザーフォームでこれが発生する方法はありますか?

ありがとう

4

2 に答える 2

0

あなたが求めているものとはまったく異なりますが、それはあなたが得ることができる最も近いものかもしれません.

への参照を追加Microsoft Forms 2.0 Object Library

標準モジュールで、Sub共通アクションを処理する を作成します

Sub FormInitialize(frm As MSForms.UserForm)
    With frm

        ' do stuff

    End With
End Sub

各フォームモジュールで標準を作成しますInitialize event

Private Sub UserForm_Initialize()
    FormInitialize Me
End Sub

for each フォームを作成する必要がありますSubが、少なくとも常に同じであり、実際の初期化ロジックのコピーは 1 つしかありません。

于 2013-01-09T22:28:26.870 に答える
0

メインライン コードで、各フォームの Initialize イベントからルーチンを呼び出すことができますか?

Private Sub UserForm_Initialize()
   Call MainCode_FormHandler(.Me)
End Sub

そしてメインコードでは:

Public Sub MainCode_FormHandler(oForm as Form)
   With oForm
      ' Set form's properties here
   End With
End With

渡されたフォームを特定する必要がある場合は、oForm.Tag をテストするロジックを含めることができます。フォームの [プロパティ] ダイアログでフォームのタグを設定します。

于 2013-01-09T22:29:59.857 に答える