如何在Excel中的Userforms之间传输值

时间:2016-10-17 07:57:46

标签: excel vba userform

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

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(并关闭userform2的窗口)。

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

我想在第一个用户窗体中单击“显示”时,它可以显示a和b(1和2)。我怎么能纠正我的代码?

1 个答案:

答案 0 :(得分:1)

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

' Go_Click'在Userform1中创建了Userform2的新类实例,该实例将触发Userform_Initialise中的Userform2事件,并将值设置为变量b。然后,您可以在frm中的Userform1变量中引用它。

您可以在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

enter image description here