第二次打开表单会引发运行时错误 9 Excel VBA

sb998

所以我有一个表单,它生成一个新的工作簿,保存它,然后使用下面这个小片段将用户返回到一个控件表单(注意 - 这不包括所有数据操作):

    'create new workbook
        Set NewWorkbook = Workbooks.Add
        With NewWorkbook
        On Error GoTo Finish
            .Title = "Project Milestones" & projectref
            .SaveAs Filename:=savelocation & "\" & projectref & " Project_Order.xlsx"
        End With

        ' ===== Fixed the error on thie line =====
        Workbooks("COFFIE Project Tracker V2.0.0").Sheets("Project Order Template").Copy Before:=Workbooks(projectref & " Project_Order.xlsx").Sheets("Sheet1")

        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E6:E7").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E9:E10").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E15:E16").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E6:E7").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E21:E22").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E27:k35").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E40:E43").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E48:E50").ClearContents
        Application.DisplayAlerts = True

        MsgBox ("Project Order data compiled.")
        Application.ScreenUpdating = True
        Unload Me
        frm_Control.Show
        Exit Sub
        End
    End If




Finish:

        Workbooks(projectref & " Project_Order.xlsx").Saved = True
        Workbooks(projectref & " Project_Order.xlsx").Close
        Kill (savelocation & "\" & projectref & " Project_Order.xlsx")
        Set NewWorkbook = Workbooks.Add
        With NewWorkbook
            .Title = "Project Milestones" & projectref
            .SaveAs Filename:=savelocation & "\" & projectref & " Project_Order.xlsx"
        End With


        ThisWorkbook.Sheets("Project Order Template").Copy Before:=NewWorkbook.Sheets("Sheet1")

        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E6:E7").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E9:E10").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E15:E16").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E6:E7").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E21:E22").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E27:k35").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E40:E43").ClearContents
        Workbooks("COFFIE Project Tracker V2.0.0").Worksheets("Project Order template").Range("E48:E50").ClearContents
        Application.DisplayAlerts = True

        MsgBox ("Project Order data compiled.")
        Application.ScreenUpdating = True

但是,用户可能希望从“报表控件”窗体运行更多报表,因此他们将单击主控件窗体上的命令按钮,并将它们带到报表控件窗体。但是,当cmd_reprot_Click()第二次运行时,它会抛出运行时错误 9 - 下标超出范围。我虽然可以通过让错误处理程序尝试强制打开表单来“解决”这个问题,但它仍然会出现相同的错误。(按钮见下方代码)

Private Sub cmd_reprot_Click()
On Error GoTo display
frm_Control.Hide
frm_reportControl.Show 'error throws here and goes to error handler below

display:
    frm_reportControl.Show ' still throws the runtime 9 error
End Sub

我的问题是 - 为什么我在第二次尝试打开表单时会收到运行时错误 9,如果有的话,有什么解决方法?

编辑:这是根据 BruceWayne 在评论中的建议更新的按钮事件

Private Sub cmd_reprot_Click()
On Error GoTo display
If frm_Control.Visible = True Then
    frm_Control.Hide
    frm_reportControl.Show
Else
    frm_reportControl.Show
End If
display:
    If frm_Control.Visible = True Then
        frm_Control.Hide
        frm_reportControl.Show
    Else
        frm_reportControl.Show
    End If
End Sub

如果需要,很乐意提供更多信息!

sb998

所以我发现了问题,原来我在生成报告后正在卸载报告表。然后,如果用户想尝试重新打开该表单,则没有什么可做的,.Show因为它已被卸载。

为了解决这个问题,我只是Unload Mefrm_reportControl.Hide. 再也没有看到那个讨厌的错误 9!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel VBA授权在第一次运行时失败,第二次运行良好

VBA Excel 到 Word - 在第二次循环运行时另存为 pdf 失败

Excel 使用 VBA 第二次尝试打印时出现运行时错误“1004”粘贴范围类的特殊方法失败

嵌套的For循环Excel VBA返回运行时错误9

错误处理不适用于 excel-vba 中的运行时错误 9

访问VBA与Excel进行交互,第二次出现错误91

使用Task Scheduler发送Outlook电子邮件时,Excel VBA代码引发运行时错误429

VBA xlPasteValues 在第二次运行时失败

VBA循环在第二次运行时退出循环

在运行时打开无模式表单 - VBA Excel

如何访问工作表数组中的单个元素并避免运行时错误9-Excel VBA

第二次运行VBA代码时,出现“运行时错误462:远程服务器计算机不存在或不可用”

尝试在初始“取消”后或在红色“ X”上关闭后尝试第二次启动时,Excel用户窗体运行时错误

运行时错误13 VBA Excel

Excel VBA运行时错误1004

Excel VBA和C#DLL:实例化WinForms对象只能执行一次。在第二次尝试时出现错误

VBA运行时错误“ 9”下标超出范围

VBA-运行时错误9:复制和粘贴

VBA中拆分功能中的错误运行时“ 9”

如何跳过运行时错误9 VBA?

VBA表单未显示第二次

Excel 2013-VBA-创建和访问[超过4个!]条件格式设置项时出现运行时错误9

IDE 会在设置错误处理程序时引发 Excel VBA 运行时错误

VBA Excel 错误运行时错误“53”

无法在Excel VBA中打开文件,运行时错误为“ 52”

VBA Excel 2010 msoFileDialogOpen路径。打开运行时错误'424':必需的对象

运行时错误1004:Excel VBA找不到要打开的文件

Excel VBA减少运行时

Excel VBA:.find函数返回运行时错误91