所以我有一个表单,它生成一个新的工作簿,保存它,然后使用下面这个小片段将用户返回到一个控件表单(注意 - 这不包括所有数据操作):
'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
如果需要,很乐意提供更多信息!
所以我发现了问题,原来我在生成报告后正在卸载报告表。然后,如果用户想尝试重新打开该表单,则没有什么可做的,.Show
因为它已被卸载。
为了解决这个问题,我只是Unload Me
用frm_reportControl.Hide
. 再也没有看到那个讨厌的错误 9!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句