有条件地运行VBA代码

时间:2016-02-02 04:41:31

标签: excel vba excel-vba

是否可以使用多重按钮,让我们说按钮1'和'按钮2'运行相同的VBA代码,但根据按下的按钮产生不同的结果?

例如,当我按下按钮1时,我希望它转到一个网站,加载数据并将其放到工作表1上。但是当我按下按钮2时,它会转到同一个站点并将其加载到工作表2。 / p>

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

3 个答案:

答案 0 :(得分:5)

如果您使用Forms按钮,则可以指定相同的宏并使用Application.Caller返回呼叫按钮的名称/ ID。

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

答案 1 :(得分:4)

创建一个子来完成工作,并将sheetname作为参数传递给该子。我用字符串变量做了,但你也可以使用工作表变量。

   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

答案 2 :(得分:0)

我更倾向于使用brettdj的解决方案

如果将相同的宏指定给多个按钮,则会根据按钮名称得到不同的结果。

您可以将按钮命名为所需的工作表。练习这个。添加几个按钮并将此代码分配给它们。单击每个按钮以查看会发生什么。

Sub GetButtonName()
    Dim Btn As String

    Btn = ActiveSheet.Shapes(Application.Caller).Name
    MsgBox Btn

End Sub