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

Calling a userform in Excel VBA and continue depending on which button was clicked

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

示例:

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

Private Sub GWPCClearDataButton_Click()

    ProgressBar.Show

End Sub

在我的用户表单中,我有以下代码:

Private Sub UserForm_Activate()

    GWPCClearData

End Sub

这调用了我的四个模块之一,目前运行良好。

这就是我卡住的地方。

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

示例:

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

我该怎么做?我还没有找到将包含按钮名称的参数传递给我的用户表单的可能性。

感谢您的帮助。

在您的表单中输入

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

当你调用你的表单时,只需像下面这样先调用子程序

<form_name>.Start_Form "Button Called From"
<form_name>.Show

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

之后显示表单

用户表单代码

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