发生错误时,下面的错误处理程序可以正常工作。但是,当没有错误时,它会正确跳过它,但是当它应该被忽略时它会执行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
答案 0 :(得分:3)
在错误处理代码开头之前放置退出Sub ,如下所示:
Exit Sub
ErrHandler:
MsgBox "Field Description in Config tab not listed on report - please check parameters"
Exit Sub