Home » excel » excel – Error handler executed when no error occurs

excel – Error handler executed when no error occurs

Posted by: admin May 14, 2020 Leave a comment

Questions:

The error handler below works correctly when an error occurs. However, when there is no error, it skips over it correctly but then it executes the code in the ErrHandler: section when it should be ignored. Can anyone tell me what I’m doing wrong, please?

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  
How to&Answers:

Put Exit Sub just before the beginning of your error handling code like so:

Exit Sub

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