error handling程序在没有错误发生时执行

下面的error handling程序在发生错误时正常工作。 但是,如果没有错误,它会正确跳过它,但是当它被忽略时,它会执行ErrHandler:部分中的代码。 任何人都可以告诉我我做错了吗?

 Sub PopulateDynamicReport() Dim getcolumnPDR As Range Dim getFieldDescriptionPDR As String Dim getFormulaPDR As Variant Dim columnletter As String Dim myrange As String Sheets("Config").Select Cells.Find(What:="Field Description", after:=ActiveCell, LookIn:= _ xlFormulas, LookAt:=xlPart, searchorder:=xlByRows, searchdirection:= _ xlNext, MatchCase:=False, SearchFormat:=False).Offset(1, 0).Activate Do If ActiveCell <> "" Then Set getcolumnPDR = getcolumn getFieldDescriptionPDR = getFieldDescription If ActiveCell.Offset(0, 1) = "Not Applicable" Then getFormulaPDR = "" On Error GoTo ErrHandler Sheets("Dynamic Report").Cells.Find(What:=getFieldDescriptionPDR, after:=ActiveCell, LookIn:= _ xlFormulas, LookAt:=xlPart, searchorder:=xlByRows, searchdirection:= _ xlNext, MatchCase:=False, SearchFormat:=False).EntireColumn.Copy getcolumnPDR On Error GoTo 0 ActiveCell.Offset(1, 0).Activate Else getFormulaPDR = getFormula columnletter = ActiveCell.Offset(0, -1) ActiveCell.Offset(0, 1).Copy Sheets("Pricing Analysis").Cells(FindLastRow, columnletter) Sheets("Pricing Analysis").Activate Cells(FindLastRow, columnletter).Activate ActiveCell.Copy Range(Selection, Selection.End(xlUp)).Select Selection.FillUp Application.CutCopyMode = False Sheets("Config").Activate ActiveCell.Copy getcolumnPDR.End(xlUp) Sheets("Pricing Analysis").Activate getcolumnPDR.EntireColumn.AutoFit getcolumnPDR.End(xlUp).Font.Bold = True Sheets("Config").Activate ActiveCell.Offset(1, 0).Activate End If End If Loop Until ActiveCell = "" ErrHandler: MsgBox "Field Description in Config tab not listed on report - please check parameters" Exit Sub End Sub 

Exit Sub放在你的error handling代码的开始之前,像这样:

 Exit Sub ErrHandler: MsgBox "Field Description in Config tab not listed on report - please check parameters" Exit Sub