如何在Excel中的用户窗体之间传递值

如何在Excel中的用户窗体之间传递值,excel,vba,userform,Excel,Vba,Userform,我想在Excel中使用两个用户表单。 第一个userform有两个按钮。 第一个按钮“Go”可以将数字1指定给a,然后转到第二个用户窗体 Public a as Integer Private Sub Go_Click() UserForm2.Show a = 1 End Sub 另一个按钮“显示”可以显示a和b的值 Private Sub Show_Click() Load UserForm2 Debug.Print a, b End Sub 在第二个userform中,它可以将2分发给b

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

Public a as Integer
Private Sub Go_Click()
UserForm2.Show
a = 1
End Sub
另一个按钮“显示”可以显示a和b的值

Private Sub Show_Click()
Load UserForm2
Debug.Print a, b
End Sub
在第二个userform中,它可以将2分发给b(并关闭userform2的窗口)


我希望当我在第一个用户窗体中单击“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\u Click”创建了一个新的
Userform2
类实例,它将在
Userform2
中触发
Userform\u 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  
Public b As Integer

Private Sub btnClose_Click()
    Me.Hide
End Sub

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

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  
Public b As Integer

Private Sub btnClose_Click()
    Me.Hide
End Sub

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

非常感谢。我试过你的代码,效果很好。我还有一个问题要问。在第二个用户表单中,我想使用boutton而不是初始化。因为在第二个用户表单中,用户将在文本框中输入一些内容,我想在第一个用户表单中使用它们。可能吗?或者你有更好的方法吗?我试着添加一个新的botton来关闭userform2,但是出现了一个错误402,说我应该在第一个计划中关闭窗口。我添加了从userform2获取文本的代码。关闭按钮隐藏用户窗体,并从内存中删除
frm