在我的工作簿中,我有一个CommandButton,可打开一个新工作簿并添加一个CommandButton。
我现在的问题是,单击按钮时,我总是得到运行时错误9。
这是我的新工作簿代码:
Sub PM_Controlling_Click()
Dim relativePath As String
Workbooks.Add
relativeString = ThisWorkbook.Path & "\Test2"
ActiveWorkbook.SaveAs Filename:=relativeString & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Call Import_UserForm
Call Import_Modul
Call Working_Structur
End Sub
这是我的导入代码:
Sub Import_UserForm
Workbooks("Test2.xlsm").VBProject.VBComponents.Import Filename:= _
"C:\Users\Desktop\Code_Samples\UserForm1.frm"
End Sub
Sub Import_Modul
Workbooks("Test2.xlsm").VBProject.VBComponents.Import Filename:= _
"C:\Users\Desktop\Code_Samples\AddAZ.bas"
End Sub
这是我的Working_Structur模块,我尝试在其中添加带代码的按钮:
Sub Working_Structur()
Dim btn1 As Object
Dim Code As String
Set btn1 = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=105, Top:=175, Width:=50, Height:=25)
ActiveSheet.OLEObjects(1).Object.Caption = "Watch"
btn1.Name = "Watch AZ"
Code = "Sub Watch_Click()" & vbCrLf
Code = Code & "Call Watch_AZ_Sheet" & vbCrLf
Code = Code & "End Sub"
' Next Part causes the run time error
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
.insertlines .CountOfLines + 1, Code
End With
我希望有人能帮助我解决这个问题。
编辑:
错误出现在Sub Working_Structure,第
行中使用ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
导致错误。
答案 0 :(得分:3)
我的理解是,当所引用的部分内容不存在或未定义时,抛出范围runtime error 9
下的下标。
错误的原因可能是ActiveSheet.Name
不是VBAComponent名称
请检查与工作表实际名称匹配的VBA组件的名称。
以下示例将引发错误,因为工作表名称ActualSheetName
不是组件名称Sheet1
重命名组件名称将解决此问题。像这样:
更新: 您可以在代码中直接使用工作表的codename属性。
With ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule