Excel VBA没有正确地打破错误

在Excel 2010中,我有这样的代码片段:

Application.DisplayAlerts = False On Error Resume Next ThisWorkbook.Worksheets("Satisfaction Summary").Delete On Error GoTo 0 Set Report = Worksheets.Add(after:=Worksheets("Main")) 'added this line to force an error: I = 1 / 0 

目标是删除表单,如果不存在,则忽略该错误,然后按该名称添加到表单中。

当我去工具|选项|常规,并select打破所有错误 ,如果工作表不存在,IDE将停止,我不能继续因为错误。 如果我改变这个设置来解决未处理的错误 ,我完全按照我的预期经过。

不幸的是,如果我把它设置为Break on Unhandled Errors ,那么我碰到的每一个错误都会导致debugging器停止执行,这不是它应该做的。 不,它不会暂停执行,并告诉我该错误的代码行,让我调查问题,并可能修复它,它终止代码的执行。 它给我一个对话框显示错误号码和描述,但是当我点击确定,代码执行已经终止,它不会把我移动到错误的代码行。

有没有其他人经历过这个,并有解决问题的任何提示?

编辑:添加一行代码强制立即错误。 这是当select“ 处理中的错误”时popup的对话框:

在这里输入图像说明

正如你所看到的,没有MsgBox调用。

我不是在ON ERROR RESUME NEXT一个大风扇。 如何检查工作表是否存在,如果有必要删除?

 Declare SheetExists as Boolean SheetExists = False For SheetCounter = 1 To Worksheets.Count If Worksheets(SheetCounter).Name = "Satisfaction Summary" Then SheetExists = True End If Next i If SheetExists Then ThisWorkbook.Worksheets("Satisfaction Summary").Delete End If 'copied from code you provided Set Report = Worksheets.Add(after:=Worksheets("Main")) 

试试这个。 同样的想法,略有不同的方法。

  Application.DisplayAlerts = False Dim wsSheet As Worksheet On Error Resume Next 'Attempts to set object to worksheet you wish to delete Set wsSheet = Sheets("Satisfaction Summary") On Error GoTo 0 'if wsSheet was successfully set to an existing sheet If Not wsSheet Is Nothing Then wsSheet.Delete End If