VBA无法获得您刚刚点击的button的属性

现在我在工作表中有几个button,每个都设置了他们的标题。 我想要实现一个像这样的function:当我点击button时,执行一个macros来过滤一个具有自己的标题的特定行,所以我需要获得我刚刚点击的button的属性,即标题。macros观的内部。

我的伪代码是这样的:

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

我碰巧find一个解决scheme是使用Application.Caller ,但我不能从它得到适当的标题,该对象返回默认标题,就像button134但不是我创buildbutton时设置的标题。

那我该怎么做呢?

您可以使用替代文字 。 尝试使用由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 

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

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

但是确保这个macros只被分配给button,而不是其他types的。

尝试这个:

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