2017-01-11 1 views
0

On Error GoToについて質問があります。私は、コードifの中でエラーが発生した場合、サブのエラーに反応しますか?

のこのライン
If CheckF = 0 Then 
     On Error GoTo Error_handler 
     .PivotItems(.PivotItems(pivotcount).name).Visible = False 


    End If 

を持っている私の質問は、私はそのif外のエラーを持っている場合、それはとにかく

On Errorを誘発するということであり、そのような場合には、私は回避する方法を持っているしたいと思いますなぜなら、それぞれの異なるエラーごとに異なる種類のメッセージが必要だからです。

私は自分自身を説明しました。

答えて

3

例では、ステートメントの後に実行されるものは、End Ifステートメントの後であってもエラーハンドラーラベルに移動します。このエラーハンドラを無効にする場合は、次のようにリセットする必要があります。

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

私はそれを行い、 'Error_handler'が' On Error Goto 0'を起動させないでしょうか? – VVV

+1

'On Error GoTo 0'は、エラー処理をオフにします。 VBAは、エラーが発生した行で停止します(通常はそうです)。あなたは 'Error_handler'でそれを行うことができますが、それを行うには間違った方法です。 'Error_handler'では、' Resume'を使うか別のラベルに行くべきです。サブ全体のエラー処理をオンにしてすべてのエラーを処理するか、エラー処理を「同じレベルで」オンまたはオフにすることをお勧めします(上の例のように)。 –

+0

[On Error Statement](http://stackoverflow.com/documentation/vba/3211/error-handling#t=201701111543262206472)のドキュメントのように見えます:-) –

0

if節が実行されている場合のみ。 On Error GoTo 0を使用すると、if節の最後にエラーハンドラをオフにすることができます。

+0

少し詳しく説明できますか?私はそれがどのように動作するのかわかりません – VVV

関連する問題