【问题标题】:VBA cannot get the property of the button you just clickedVBA 无法获取您刚刚单击的按钮的属性
【发布时间】:2017-11-03 20:37:57
【问题描述】:

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

我的伪代码是这样的:

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

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

那我该怎么做呢?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 除非 OP 明确要求,否则理想情况下我们不会提供使用 Select 的解决方案
    【解决方案2】:

    您可以使用替代文字。首先尝试使用Application.Caller 返回的形状名称来获取Shape 对象。之后,您可以轻松访问该形状的替代文本:

    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
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-11
        • 2012-05-04
        • 2015-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多