VBA 无法获取您刚刚单击的按钮的属性
Posted
技术标签:
【中文标题】VBA 无法获取您刚刚单击的按钮的属性【英文标题】:VBA cannot get the property of the button you just clicked 【发布时间】: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
,但不是我在创建按钮时设置的标题。
那我该怎么做呢?
【问题讨论】:
【参考方案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
但请确保此宏仅分配给按钮,而不是其他类型的形状。
【讨论】:
以上是关于VBA 无法获取您刚刚单击的按钮的属性的主要内容,如果未能解决你的问题,请参考以下文章