用于检查工作表是否存在的函数的VBA错误处理

Dav*_*ard 3 error-handling vba

我有一个函数,它将添加一个工作表并重命名它,但首先检查是否已存在该名称的工作表.要做到这一点,我在这里使用相当广泛的功能 -

Function WorksheetExists(ByVal WorksheetName As String) As Boolean

    On Error Resume Next ' Set to Resume Next as don't want to end macro if this fails
    WorksheetExists = (Sheets(WorksheetName).Name <> "")
    On Error GoTo 0

End Function
Run Code Online (Sandbox Code Playgroud)

我的问题是我已经设置On Error GoTo error_exit了调用此函数的父子,因此On Error GoTo 0在检查表单是否存在之后会调用该调用.

我试过On Error GoTo error_exit这个函数,但是我得到以下错误 -

Complie错误:标签未定义

有谁知道如何解决这个问题?

Ste*_*eve 5

退出函数时,WorksheetExists错误范围将自动恢复到先前的情况.您无需执行任何操作即可恢复On Error Goto error_exit调用子/函数.

有趣的是,如果从此函数中删除错误处理并且不存在具有传递名称的工作表,则代码将在调用错误处理标签上继续执行(即在调用代码中的error_exit:标签处) )

  • @DavidGard:除此之外,你可以删除`On Error GoTo 0`. (3认同)