我想申請「對錯誤轉到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