这必须是明显的事情,但我想使用在Excel中按下的命令按钮的名称作为宏中的变量。宏就像将单元格的值设置为按钮的名称一样简单;因此,如果按下按钮标题“10”,则单元格值将为“10”,相同的宏需要适用于所有数字按钮标题/名称。 再次,抱歉,如果这是显而易见的!
答案 0 :(得分:1)
试试这个,适用于表单按钮但不适用于ActiveX按钮。
Sub Button1_Click()
If Not IsError(Application.Caller) Then
Dim obj2 As Object
Set obj2 = ActiveSheet.Shapes.Item(Application.Caller)
Debug.Print obj2.AlternativeText
End If
End Sub
但你问的问题是关于命令按钮(ActiveX变种)而且这涉及到更多,我们需要找到形状,然后通过OLEFormat和两层IDispatch钻取以获得对命令按钮的引用,然后我们使用WithEvents触发事件处理程序。
Option Explicit
'* Inside Sheet module
Private WithEvents mcmd As MSForms.CommandButton
Private Sub Initialise()
Dim obj As Object
Set obj = Me.Shapes.Item("CommandButton1")
Set mcmd = obj.OLEFormat.Object.Object
End Sub
Private Sub mcmd_Click()
Debug.Print mcmd.Caption
End Sub
可悲的是,你需要为我认为的每个命令按钮初始化这样的代码。