【问题标题】:Use button caption as variable excel使用按钮标题作为变量 excel
【发布时间】:2017-05-07 07:57:51
【问题描述】:

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

【问题讨论】:

  • Application.Caller 在这里有帮助,但必须是表单按钮。
  • @EEM 没有,我尝试在网上搜索,但找不到任何地方

标签: vba excel macros


【解决方案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

遗憾的是,您需要为我认为的每个命令按钮初始化这样的代码。

【讨论】:

  • 抱歉,我的 excel 是芬兰语,不确定有什么区别,但我问的是非 ActiveX 按钮,所以它工作得很好。
  • 因为我显然无法编辑我的评论,谢谢!
  • 我认为,当您的声誉提高时,您可以编辑 cmets。所以,我希望你能回到 StackOverflow。
猜你喜欢
  • 2019-07-21
  • 2015-04-20
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2020-11-28
  • 2020-03-24
  • 1970-01-01
相关资源
最近更新 更多