Excel 2007 VBA添加一个button

我正在尝试编写一些代码来自动将一个button放置到我的工作表中,当点击button时它将执行一些代码。 我基于从“Excel 2013 Power Programming with VBA”一书中看到的例子编写我的代码(p896)。 我正在使用Excel 2007,但不知道它是否重要。 无论如何,我修改了代码如下:

*Sub AddButtonAndCode() Dim NewButton As OLEObject Dim NewSheet As Worksheet Set NewSheet = Worksheets("Sheet1") Set NewButton = NewSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Left:=5, Top:=5, Height:=25, Width:=100) Code = "Sub CommandButton1_Click()" & vbCrLf Code = Code & " MsgBox ""???""" & vbCrLf Code = Code & "End Sub" With ActiveWorkbook.VBProject.VBComponents(NewSheet.Name).CodeModule NextLine = .CountOfLines + 1 .InsertLines NextLine, Code End With End Sub* 

它适用于button部分,但是在添加下面定义button的部分之后,它给了我错误“下标超出范围”

有人能帮我弄清楚那里有什么问题吗?

非常感谢你!

你的代码适合我几个微调。

 Sub AddButtonAndCode() Dim NewButton As OLEObject Dim NewSheet As Worksheet, Code As String Dim nextline As Long Set NewSheet = Worksheets("Sheet1") Set NewButton = NewSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Left:=5, Top:=5, Height:=25, Width:=100) NewButton.Name = "CommandButton1" '<<<<<<<<< ensure correct name Code = "Sub CommandButton1_Click()" & vbCrLf Code = Code & " MsgBox ""???""" & vbCrLf Code = Code & "End Sub" 'Use NewSheet.CodeName not NewSheet.Name With ActiveWorkbook.VBProject.VBComponents(NewSheet.CodeName).CodeModule nextline = .CountOfLines + 1 .InsertLines nextline, Code End With End Sub 

在新的工作簿中,工作表的NameCodeName将是相同的,所以在这种情况下,您的原始行将起作用,但如果工作表或其代码模块被重命名,则会失败。