web-dev-qa-db-ja.com

モジュールでUserForm_Initialize()を呼び出す

UserFormコードオブジェクトの代わりにModuleUserForm_Initialize()を呼び出すにはどうすればよいですか?

5
4 Leave Cover

モジュールから:

_UserFormName.UserForm_Initialize
_

ユーザーフォームで、次のようにサブを更新することを確認してください:

Public Sub UserForm_Initialize()なので、フォームの外部から呼び出すことができます。

または、ユーザーフォームが読み込まれていない場合:

_UserFormName.Show_はフォームをロードするため、最終的に_UserForm_Initialize_を呼び出すことになります。

9
Daniel

IMHOメソッドserForm_Initializeは非公開のままにする必要がありますユーザーフォームのInitializeイベントのイベントハンドラであるためです。

このイベントハンドラは、ユーザーフォームの新しいインスタンスが作成されたのときに呼び出されます。このハンドラーでも、uはUserForm1クラスのプライベートメンバーを初期化できます。

例:

標準モジュールコード:

Option Explicit

Public Sub Main()
  Dim myUserForm As UserForm1

  Set myUserForm = New UserForm1
  myUserForm.Show

End Sub

ユーザーフォームコード:

Option Explicit

Private m_initializationDate As Date

Private Sub UserForm_Initialize()
  m_initializationDate = VBA.DateTime.Date
  MsgBox "Hi from UserForm_Initialize event handler.", vbInformation
End Sub
3
dee

解決策結局のところ、私はなんとか問題を解決することができました。

モジュール内:UserForms(Name).Userform_Initialize

このメソッドは、現在のユーザーフォームを動的に初期化するのに最適です。

1
4 Leave Cover