我正在尝试为其中一个代码添加错误处理。我正在为工作表对象分配具有特定名称的工作表,现在,我尝试添加OnError
语句,以防万一用户更改工作表的名称,然后代码应在显示消息以更正文件名后正常退出子程序。
但是问题是因为我提供了以下结构,所以即使文件名确定,子出口代码也总是执行。
问题是,由于我在下面的结构中提供了详细信息,所以即使文件名确定,子出口代码也总是执行。
Private Sub DoSomething()
On Error GoTo CleanFail
'...code...
CleanExit:
'cleanup code here
Exit Sub
CleanFail:
If Err.Number = 9 Then 'subscript out of range
Err.Clear
Resume Next
Else
MsgBox Err.Description
Resume CleanExit
End If
End Sub
On Error GoTo ErrorFailLoad
Set LoadSheet = Application.ActiveWorkbook.Worksheets("Load_Template")
ErrorExit:
End Sub
ErrorFailLoad:
MsgBox "Main File name must be Load_Template. Please change and re-run Macro"
Resume ErrorExit
On Error GoTo ErrorFailEquip
Set EquipSheet = Application.ActiveWorkbook.Worksheets("EQUIP")
ErrorExit:
End Sub
ErrorFailEquip:
MsgBox "Equipment File name must be EQUIP. Please change and re-run Macro"
Resume ErrorExit
我希望代码仅检查文件名是否不可用,然后显示错误消息并退出。实际结果是即使文件名正确也退出了代码。