我正在尝试从按钮的单击事件中获取按钮控件的属性值,而不使用按钮的名称(因为我想对Excel工作表上的每个按钮使用相同的代码)。
经过大量研究后,我看到许多参考资料尝试以下内容:
Me.ActiveControl.name
或
Me.Shapes(Application.Caller).Name
但是,从Excel中执行时,这两个都会抛出错误。请注意,我正在使用Excel 2010。
提前感谢您的帮助。 利
答案 0 :(得分:3)
您想要的是什么,但为此您需要创建Class
这样做。
插入一个类模块并将此代码粘贴到那里。
Option Explicit
Public WithEvents MyButton As MSForms.CommandButton
Private Sub MyButton_Click()
MsgBox MyButton.Name
End Sub
下一步插入模块并将此代码放在那里
Dim shpButtons() As New Class1
Sub StartCode()
Dim shp As Shape
Dim btnCount As Long
ReDim shpButtons(1 To 1)
btnCount = 0
For Each shp In ActiveSheet.Shapes
If shp.OLEFormat.Object.OLEType = xlOLEControl Then
btnCount = btnCount + 1
ReDim Preserve shpButtons(1 To btnCount)
Set shpButtons(btnCount).MyButton = shp.OLEFormat.Object.Object
End If
Next
End Sub
Sub StopCode()
Dim iBtn As Long
On Error Resume Next
For iBtn = LBound(shpButtons) To UBound(shpButtons)
Set shpButtons(iBtn).TheText = Nothing
Next
End Sub
现在只需运行Sub StartCode()
接下来,当您单击ActiveX CommandButton时,您将获得它的名称。
答案 1 :(得分:1)
尝试ActiveSheet.Shapes(Application.Caller).Name