有条件地运行VBA代码

是否有可能有多functionbutton,可以说'button1'和'button2'运行相同的VBA代码,但产生不同的结果基于按下的button?

例如,当我按下button1,我希望它去到一个网站,加载数据,并把它放到表1,但是当我按下button2,它去到同一个网站,并加载到表2。

我知道我可以有相同的VBA代码的多个实例(不同的名称),但我希望简化代码,并防止它过于复杂。

创build一个子工作,并将工作表名作为parameter passing给该子工作。 我做了一个stringvariables,但你也可以用一个工作表variables来做到这一点。

Sub Button1_Click() LoadWebsiteToSheet "Sheet1" End Sub Sub Button2_Click() LoadWebsiteToSheet "Sheet2" End Sub Sub LoadWebsiteToSheet(sName as String) '... code to load website to Worksheets(sName) End Sub 

如果您正在使用Formsbutton,则可以分配相同的macros,并使用Application.Caller返callback用button的名称/标识。

 Sub Test() MsgBox Application.Caller & " was pressed" End Sub 

我更倾向于brettdj的解决scheme

如果将相同的macros分配给多个button,则会根据button名称得到不同的结果。

您可以将button命名为您想要的表格。 练习这个。 添加几个button并将其分配给他们。 点击每个button,看看会发生什么。

 Sub GetButtonName() Dim Btn As String Btn = ActiveSheet.Shapes(Application.Caller).Name MsgBox Btn End Sub