是否可以使用多重按钮,让我们说按钮1'和'按钮2'运行相同的VBA代码,但根据按下的按钮产生不同的结果?
例如,当我按下按钮1时,我希望它转到一个网站,加载数据并将其放到工作表1上。但是当我按下按钮2时,它会转到同一个站点并将其加载到工作表2。 / p>
我知道我可以拥有相同VBA代码的多个实例(具有不同的名称)但是我希望简化代码并防止它过于复杂。
答案 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