VBA使用代码添加CommandButton-运行时错误9

时间:2018-07-06 08:38:31

标签: excel vba excel-vba

在我的工作簿中,我有一个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

导致错误。

1 个答案:

答案 0 :(得分:3)

我的理解是,当所引用的部分内容不存在或未定义时,抛出范围runtime error 9下的下标。

错误的原因可能是ActiveSheet.Name不是VBAComponent名称

请检查与工作表实际名称匹配的VBA组件的名称。

以下示例将引发错误,因为工作表名称ActualSheetName不是组件名称Sheet1

enter image description here

重命名组件名称将解决此问题。像这样:

enter image description here

更新: 您可以在代码中直接使用工作表的codename属性。

Worksheet.CodeName MSDN

With ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).CodeModule