如何对我的Excel VBA代码使用错误处理

时间:2019-05-08 06:13:18

标签: excel vba error-handling

我正在尝试为其中一个代码添加错误处理。我正在为工作表对象分配具有特定名称的工作表,现在,我尝试添加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

我希望代码仅检查文件名是否不可用,然后显示错误消息并退出。实际结果是即使文件名正确也退出了代码。

0 个答案:

没有答案