现在我在工作表中有几个按钮,每个按钮都设置了标题。我想实现这样的功能:当我点击按钮时,执行宏来过滤具有自身标题的特定行,所以我需要获取我刚刚单击的按钮的属性,即标题。内在的宏。
我的伪代码如下:
Sub filterPM()
Dim capBt as String
'get button caption as capBt
ActiveSheet.Range(...).Autofilter(...,criterial=capBt,...)
End Sub
我碰巧找到一个解决方案是使用Application.Caller
,但我无法从中获取正确的标题,该对象返回默认标题,如button134
但不是我设置的标题创建了按钮。
那我该怎么做呢?
答案 0 :(得分:1)
您可以使用替代文字。首先尝试使用Shape
返回的形状名称来获取Application.Caller
对象。之后,您可以轻松访问该形状的替代文字:
Sub ButtonClick()
Dim btn As Shape
Dim altText As String
Set btn = ThisWorkbook.Worksheets("Sheet1").Shapes(Application.Caller)
altText = btn.AlternativeText
ActiveSheet.Range(...).Autofilter(...,criterial=altText,...)
End Sub
答案 1 :(得分:0)
试试这个:
capBt = Worksheets("Sheet1").Buttons("Button 1").Text
答案 2 :(得分:0)
形状没有标题属性。您需要使用具有ActiveSheet.Buttons
属性的.Caption
对象来访问它。
capBt = Sheet1.Buttons(Application.caller).Caption
但请确保此宏仅分配给按钮,而不是其他类型的形状。