将按钮文本/名称作为参数传递给子/功能

时间:2018-11-06 15:29:36

标签: excel vba

我有4个按钮-作为形状,因为我想对它们应用某种样式-所有按钮都具有不同的文本,并且命名不同,否则它们是相同的。

我想为所有接受按钮文本或名称作为参数的子项分配相同的子项,并根据传递给子项的文本/名称执行略有不同的操作。

有可能吗?还是我必须创建4个子,每个子1个按钮?

代码草稿:

Sub button_pressed(button_text as string)

If button_text = "A" then
    do something
Else if button text = "B" then
    do something else
'etc...
end if

End sub

2 个答案:

答案 0 :(得分:3)

如果它们是形状,只需将相同的宏分配给所有形状,然后在宏中测试Application.Caller

Sub button_pressed()
dim button_text as string
button_text = application.caller
If button_text = "A" then
    do something
Elseif button_text = "B" then
    do something else
'etc...
end if

End sub

尽管形状名称超过31个字符会遇到问题,因为Application.Caller仅返回前31个字符。

答案 1 :(得分:2)

如果这些是分配了宏的形状,则可以使用Application.Caller来获取单击按钮的名称。所以:

Sub AssignedMacro()
    Select Case Application.Caller
    Case "ButtonCaption 1"
    Case "ButtonCaption 2"
    Case Else
    End Select
End Sub