使用button标题作为variables的Excel

这必须是一个显而易见的事情,但我想要使用在Excel中按下的命令button的名称作为macros中的variables。 这个macros就像设置一个单元格的值到button的名字一样简单; 因此,如果button标题为“10”,单元格值将是“10”,同一个macros需要为所有数字button标题/名称工作。 再次,对不起,如果这是明显的!

试试这个,使用窗体button,但不是ActiveXbutton。

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 

但是你的问题是关于命令button的问题(ActiveX多种多样),而且这涉及更多,我们需要find形状,然后通过OLEFormat和两层IDispatch钻取以获得对命令button的引用,然后我们使用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 

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