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

时间:2017-06-02 12:20:44

标签: excel vba excel-vba

现在我在工作表中有几个按钮,每个按钮都设置了标题。我想实现这样的功能:当我点击按钮时,执行宏来过滤具有自身标题的特定行,所以我需要获取我刚刚单击的按钮的属性,即标题。内在的宏。

我的伪代码如下:

Sub filterPM()
    Dim capBt as String
    'get button caption as capBt
    ActiveSheet.Range(...).Autofilter(...,criterial=capBt,...)
End Sub

我碰巧找到一个解决方案是使用Application.Caller,但我无法从中获取正确的标题,该对象返回默认标题,如button134但不是我设置的标题创建了按钮。

那我该怎么做呢?

3 个答案:

答案 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

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