在vba中用户表单和主模块之间的交换值

时间:2015-06-22 12:11:20

标签: excel vba module userform

我已经在这个问题上工作了几个小时,所以我真的很感激任何答案。

我有一个带有三个按钮的用户窗体,我喜欢它们传递一个值,所以我可以在我的主模块中使用该值,并根据值运行一个特定的代码。 我到处搜索,但他们都传递了文本框中的值

这是我的用户表单代码:

private sub cancelButton_Click()
    response = 1
    UserForm1.Hide
End Sub

private Sub SutunButton_Click()
    response = 2
    UserForm1.Hide
End Sub

private Sub TirButton_Click()
    response = 3
    UserForm1.Hide
End Sub

这是我的主要模块:

public response as integer
sub example()
.
.
.
userform1.show
if response=1 then
msgbox "1"
elseif response = 2 then
msgbox "2"
elseif response = 3 then
msgbox "3"
end if
.
.
.
end sub

当然我放msgbox使我的代码变得简单。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

删除全局。到模块添加:

Public Sub process(form As UserForm1, response As Integer)
    form.Hide

    Select Case response
        Case 1: MsgBox 1
        Case 2: MsgBox 2
        Case 3: MsgBox 3
    End Select
End Sub

将事件更改为:

private Sub SutunButton_Click()
    process Me, 2
End Sub