UserFormで入力(または選択)された情報を、別のUserFormに反映させる方法です。これには、2つのやり方があります。なお、ここでは、UserForm1のTextBoxに入力された文字列を、UserForm2のLabelに表示するという動作を例にします。
【UserForm1】
【UserForm2】
難しく考えることはありません。UserForm1のコードから、UserForm2のコントロールを直接操作してやればいいんです。
【UserForm1】のコード
Private Sub CommandButton1_Click() ''[UserForm2を開く]ボタン UserForm2.Label1.Caption = Me.TextBox1.Text UserForm2.Show End Sub
【UserForm2】のコード
Private Sub CommandButton1_Click() ''[このUserFormを閉じる]ボタン Unload Me End Sub
UserForm1から「UserForm2.Label1.Caption = Me.TextBox1.Text」とUserForm2のコントロールを操作すると、そのときUserForm2が自動的にLoadされますので、UserForm2の「UserForm_Initialize」も自動的に実行されます。
UserForm1とUserForm2の両方で使える共通の変数を用意します。こうした広域変数は、標準モジュールで宣言します。
【UserForm1】のコード
Private Sub CommandButton1_Click() ''[UserForm2を開く]ボタン buf = Me.TextBox1.Text UserForm2.Show End Sub
【UserForm2】のコード
Private Sub CommandButton1_Click() ''[このUserFormを閉じる]ボタン Unload Me End Sub Private Sub UserForm_Initialize() Label1.Caption = buf End Sub
広域変数の代わりにセルを使う手もありますね。そしたら、そのために標準モジュールを追加したり、変数を宣言する必要もありません。まあ、そのように使えるワークシートが空いていればの話ですけど。