VBA无法获取您刚才单击的按钮的属性

VBA无法获取您刚才单击的按钮的属性,vba,excel,Vba,Excel,现在我在工作表中有几个按钮,每个按钮都设置了标题。我想实现这样一个功能:当我单击按钮时,会执行一个宏来过滤带有标题的特定行,因此我需要获取我刚才在宏内部单击的按钮的属性,即标题 我的伪代码如下: Sub filterPM() Dim capBt as String 'get button caption as capBt ActiveSheet.Range(...).Autofilter(...,criterial=capBt,...) End Sub 我碰巧发现一个解

现在我在工作表中有几个按钮,每个按钮都设置了标题。我想实现这样一个功能:当我单击按钮时,会执行一个宏来过滤带有标题的特定行,因此我需要获取我刚才在宏内部单击的按钮的属性,即标题

我的伪代码如下:

Sub filterPM()
    Dim capBt as String
    'get button caption as capBt
    ActiveSheet.Range(...).Autofilter(...,criterial=capBt,...)
End Sub
我碰巧发现一个解决方案是使用
应用程序。调用者
,但我无法从中获得正确的标题,该对象返回默认标题,类似于
按钮134
,但不是我创建按钮时设置的标题

那么我该怎么做呢?

您可以使用替代文本。首先尝试使用
应用程序返回的形状名称获取
形状
对象。调用者
。之后,您可以轻松访问该形状的alt文本:

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
试试这个:

capBt = Worksheets("Sheet1").Buttons("Button 1").Text

形状没有标题属性。您需要使用具有
.Caption
属性的
ActiveSheet.Buttons
对象访问它

capBt = Sheet1.Buttons(Application.caller).Caption

但请确保此宏仅分配给按钮,而不分配给其他类型的形状。

除非OP特别要求,否则理想情况下,我们不会提供使用
Select