如何在 Excel 中的用户表单之间传输值

How to transfer values between Userforms in Excel

我想在 Excel 中使用两个用户表单。 第一个用户窗体有两个按钮。 第一个按钮 'Go' 可以给 a 数字 1,然后转到第二个用户表单。

Public a as Integer
Private Sub Go_Click()
UserForm2.Show
a = 1
End Sub

还有另一个按钮 'Show' 可以显示 a 和 b 的值。

Private Sub Show_Click()
Load UserForm2
Debug.Print a, b
End Sub

在第二个用户窗体中,它可以将2分配给b(并关闭用户窗体2的window)。

Public b as Integer
Private Sub Back_Click()
Load UserForm1
b = 2
UserForm2.Hide
End Sub

我希望当我在第一个用户表单中单击 'Show' 时,它可以同时显示 a 和 b(1 和 2)。请问我该如何更正我的代码?

Userform1中有此代码:

Public a As Integer
Public frm As UserForm2

'Userform1 code.
Private Sub Go_Click()
    Set frm = New UserForm2
    a = 1
End Sub

Private Sub Show_Click()
    Debug.Print a, frm.b
    Set frm = Nothing
End Sub

userform2中的这个:

Public b As Integer

'UserForm2 code
Private Sub UserForm_Initialize()
    b = 2
End Sub

Userform1 中的 'Go_Click' 创建了 Userform2 的新 class 实例,它将触发 Userform2 中的 Userform_Initialise 事件并设置变量 b 的值。然后,您可以从 Userform1.

中的 frm 变量引用它

您可以在 Userform2 中输入文本并隐藏表单:
Userform1 代码:

Public a As Integer
Public frm As UserForm2

'Userform1 code.
Private Sub Go_Click()
    Set frm = New UserForm2
    a = 1
    frm.Show
End Sub

Private Sub Show_Click()
    Debug.Print a, frm.b, frm.TextBox1
    Set frm = Nothing
End Sub  

UserForm2代码:

Public b As Integer

Private Sub btnClose_Click()
    Me.Hide
End Sub

'UserForm2 code
Private Sub UserForm_Initialize()
    b = 2
End Sub