我想申请“对错误转到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
并关闭原始工作簿(不是第一次发生的单独工作表),并使用户无语。我想避免出现这样的情况,因为具有不良Excel技能的用户会制作这些报告。
有什么建议吗?
如果你完成了'On Error Goto xxx'处理程序,你可以用'On Error Goto 0'来关闭它。更好的是,在调用SaveAs之前使用'Dir()'来检查文件是否存在操作。 –
你好蒂姆,有趣,但错误转到0不会禁用处理程序。我可以检查dir,但是我想给用户一些空间让他“重新运行”,以防他做错了事情。不能理解为什么onerror处理程序通过宏的所有其余部分保持启用状态。 – user3812753
@ user3812753我有点不同意。当你调用'On Error Goto 0'时,它不会重新调用处理程序。你是否正确放置或错误处理程序?看我的帖子。 – L42