使用按钮标题作为变量excel

时间:2016-12-21 19:26:54

标签: excel vba excel-vba macros

这必须是明显的事情,但我想使用在Excel中按下的命令按钮的名称作为宏中的变量。宏就像将单元格的值设置为按钮的名称一样简单;因此,如果按下按钮标题“10”,则单元格值将为“10”,相同的宏需要适用于所有数字按钮标题/名称。 再次,抱歉,如果这是显而易见的!

1 个答案:

答案 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

可悲的是,你需要为我认为的每个命令按钮初始化这样的代码。