在Excel VBA中调用用户窗体并继续取决于哪个button被点击

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

例:

我点击一个button,执行下面的代码,使我的进度栏可见:

Private Sub GWPCClearDataButton_Click() ProgressBar.Show End Sub 

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

 Private Sub UserForm_Activate() GWPCClearData End Sub 

这叫我四个模块之一,迄今为止工作正常。

现在,这里是我卡住的地方。

当然,我想为所有模块使用相同的进度条,但是如何在用户窗体代码块中确定哪个button被点击,然后根据那个调用另一个模块?

例:

 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 

我怎么能这样做? 我还没有find一个可能性传递一个参数到我的用户表单将包含button名称。

谢谢你的帮助。

在你的表格中

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

当你打电话给你的表单时,先调用子表格,如下所示

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

基本上你必须通过variables通过另一个子(可以称为任何东西)在用户窗体中,然后显示窗体


用户表单代码

 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