我想在代码的下几行中应用“On Error GoTo err1”:
On Error GoTo err1
ActiveWorkbook.SaveAs Filename:="C:\project\" & Year(Date) & "\" & _
MonthName(Month(Date)) & "\" & MyFileName & ".xls"
ActiveWorkbook.Close SaveChanges:=False
就是这样,之后我想禁用错误处理。我试图添加“On Error resume”,但没有任何结果。 err1处理看起来像这样:
err1:
MsgBox ("Project will not overwrite the file"), vbCritical
ActiveWorkbook.Close SaveChanges:=False
此子程序将一张文件保存到新的.xls文件中,它会按日期自动保存。如果已生成文件,并且当要求覆盖文件时,将运行宏的人点击“否”,则此err1
将弹出消息并阻止用户获取调试消息。但是,这个错误处理似乎是通过所有不好的代码 - 保存文件后生成一个自动电子邮件,如果该人想要在单击“发送”按钮之前返回项目,它会转到相同的err1
并关闭原始工作簿(不是第一次发生的单独工作表)并使用户无语。我想避免这种情况,因为具有不良Excel技能的用户将生成这些报告。
有什么建议吗?
答案 0 :(得分:1)
这实际上不是答案,但我不适合评论。
我假设你做了类似下面的事情。所以你有点三明治你怀疑的行产生错误与OEG和OEG0如下:
Sub test()
On Error GoTo err1
'Access non existing named range
Range("ProduceError").Select
'Above will produce error and your handler kicks in
On Error GoTo 0
MsgBox "First error handled successfully"
'Access invalid range address
Range("B0").Select
'Above will error out normally and err1 not called
'OEG<Label> only called once and not in the entire macro
Exit Sub
err1:
MsgBox Err.Description
Resume Next
End Sub
现在你看,你的错误处理程序在OEG0行之后不再被调用 遇到第二个错误产生线后,将引发正常错误 Now, you might want to check this out to review error handling