在运行时将命令button添加到工作表中,并定义事件

我正在尝试在运行时在工作表中添加一个ActiveX命令button。 命令button的数量将取决于工作表中的行数。 我打算在命令button属性中给出x和y坐标以正确定位它们。 我明白,我们可以用这种方式在用户窗体中插入命令button。

Private Sub CommandButton1_Click() Me.Controls.Add _ "Forms.CommandButton.2", "CopyOf" End Sub 

我们如何在工作表(不是用户表单)中插入命令button。 工作表(“abc”)。添加不起作用。 另外如何为他们定义独立的点击事件。 例如,如果我点击一个命令button,它应该告诉我它是哪一行。

谢谢

————–更新—————————–

所以我可以根据工作表中的行数dynamic地添加命令button到他们需要的地方。

 Private Sub addb3(ByVal rows_present_alerts As Integer) Dim topcounter As Double topcounter = 15.75 For i = 2 To rows_present_alerts ' The first row has the column headers With Worksheets("abc").OLEObjects .Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=509.25, Top:=topcounter, Width:=48, Height:=14.25 _ ).Select End With topcounter = topcounter + 15 ' (not sure this approach will work in monitors with diff screen resolution but anyways) Next i End Sub 

我想为每个命令button分配点击事件。 当我点击命令button时,它应该告诉我它在哪一行。

处理这类事情的最简单的方法是logging一个macros,然后执行该操作,并查看logging了哪些代码。 在这种情况下,我录制了一个macros,并添加了一个button,并得到代码片段:

 Sub Macro1() ' ' Macro1 Macro ' ' ActiveSheet.Buttons.Add(126.75, 39.75, 46.5, 19.5).Select End Sub 

你应该可以从那里拿走…

它可以帮助,也许你会想知道如何访问它;

 Sub addButton() Dim myButton As OLEObject Set myButton = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Left:=0, Top:=300, Height:=20, Width:=200) myButton.Placement = XlPlacement.xlFreeFloating myButton.Object.Caption = "Click Me..." myButton.Name = "DynamicButton" End Sub Private Sub DynamicButton_Click() MsgBox "Hello sheet" End Sub