在Excel VBA中调用userform并根据单击的按钮继续

时间:2015-08-11 13:35:58

标签: excel vba progress-bar userform

我的Excel工作簿中有四个模块,三个按钮和一个用户窗体,一个进度条。我想在所有四个模块的运行时间内显示一个进度条。

示例:

我单击一个按钮,该按钮执行以下代码并使我的进度条可见:

Private Sub GWPCClearDataButton_Click()

    ProgressBar.Show

End Sub

在我的userform中,我有以下代码:

Private Sub UserForm_Activate()

    GWPCClearData

End Sub

这称我的四个模块之一到目前为止工作正常。

现在我就被困住了。

当然,我想对所有模块使用相同的进度条但是如何在userform代码块中确定单击了哪个按钮,然后根据该调用另一个模块?

示例:

Private Sub GWPCClearDataButton_Click()

    ProgressBar.Show

End Sub

Private Sub GSEPClearDataButton_Click()

    ProgressBar.Show

End Sub

用户窗体:

Private Sub UserForm_Activate()

    If "BUTTON_NAME" = "GWPCClearDataButton" Then

        GWPCClearData

    ElseIf "BUTTON_NAME" = "GSEPClearDataButton" Then

        GSEPClearData

    End if

End Sub

我怎么能这样做?我还没有找到将参数传递给包含按钮名称的userform的可能性。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在表格中

Sub Start_Form(Called_From as string)
    'Process Called_From as needed
End Sub

当你打电话给你的表格时,只需按下面的

调用sub
<form_name>.Start_Form "Button Called From"
<form_name>.Show

基本上你必须通过userform中的另一个sub(可以被称为任何东西)传递变量,然后在

之后显示表单

用户表单代码

Dim test

Private Sub UserForm_Activate()
MsgBox test
End Sub

Sub start(tt)
test = tt
End Sub

模块代码

Sub t()
UserForm1.start "Hello World!"
UserForm1.Show
End Sub