在 if 内部出现错误时,它是否对 sub 上的任何错误做出反应?

On error goto inside an if, does it react to any error on the sub?

我有一个关于 On Error GoTo 的问题。我有这行代码

    If CheckF = 0 Then
        On Error GoTo Error_handler
        .PivotItems(.PivotItems(pivotcount).name).Visible = False


    End If

我的问题是,如果我在 if 之外有错误,它无论如何都会触发 On Error

如果是这种情况,我希望有办法避免它,因为对于每个不同的错误我都需要不同类型的消息。

我希望我自己解释清楚了。

仅当 if 子句被执行时。 使用 On Error GoTo 0,您可以在 if 子句的末尾关闭错误处理程序。

在您的示例中,在 On Error 语句之后执行的所有内容都将转到错误处理程序标签,即使在 End If 语句之后也是如此。如果您想关闭此错误处理程序,您需要按如下方式重置它:

If CheckF = 0 Then
    On Error GoTo Error_handler
    .PivotItems(.PivotItems(pivotcount).name).Visible = False
    On Error GoTo 0
End If