如何将代码导入另一页上的Activex控件button?

我已经使用一个button(通过单击)来创build一个新工作表并插入一个button,但我想要将代码导入到新的button(这里是MyPrecodedButton)。

Private Sub CommandButton1_Click() Dim z As Integer Dim wb As Workbook Dim ws2 As Worksheet, wsnew As Worksheet Set wb = ThisWorkbook Set ws2 = wb.Sheets("Sheet2") z = ws2.Cells(2, 1).Value Set wsnew = Sheets.Add ' Declare your New Sheet in order to be able to work with after wsnew.Name = "PIAF_Summary" & z z = z + 1 With wsnew.Range("A1:G1") .Merge .Interior.ColorIndex = 23 .Value = "Project Name (To be reviewed by WMO)" .Font.Color = vbWhite .Font.Bold = True .Font.Size = 13 End With ws2.Cells(2, 1).Value = z Dim Rngc As Range: Set Rngc = wsnew.Range("F35") With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=Rngc.Left, Top:=Rngc.Top, Width:=205, Height:=20) .Name = "MyPrecodedButton" ' change the name End With End sub 

这里是MyPrecodedButton的代码

 Public Sub MyPrecodedButton_Click() MsgBox "Co-Cooo!" End Sub 

让我们简单地演示一下你可以用VBA来添加button。

如果ActiveSheet不是“Sheet1”,下面的代码将添加一个button到单元格B2。

 Option Explicit Sub SayHello() MsgBox "Hello from """ & ActiveSheet.Name & """" End Sub Sub AddButton() Dim oRng As Range Dim oBtns As Buttons ' Add "Microsoft Forms 2.0 Object Library" to References if you want intellisense If ActiveSheet.Name <> "Sheet1" Then ' Only works if it's not "Sheet1" Set oRng = Range("B2") Set oBtns = ActiveSheet.Buttons With oBtns.Add(oRng.Left * 1.05, oRng.Top * 1.05, oRng.Width * 0.9, oRng.Height * 2 * 0.9) .Caption = "Say Hello!" .OnAction = "SayHello" End With Set oBtns = Nothing Set oRng = Nothing End If End Sub 

之前和之后的截图:
之前 后

现在点击button:
行动

所以,如果你的代码足够通用(处理所有可能的情况),就不需要通过代码添加代码。 即准备好你的代码,然后分配button的OnAction属性来调用正确的Sub