On Error Resume Nextって関数内までは見に行かないのね

てきとうにいろいろ

普段は「On Error Resume Next」は使用しないので、あんまり仕様が分かってなかった。

エラーがでても次の行から処理を継続するとかだった気がしますが、、、

で、こんなコードを書いてみた。

Sub start()
    
    On Error Resume Next

    Dim i As Long
    
    i = i / 0
     
    Debug.Print ("でばっぐ")
    
End Sub

この場合、7行目でエラーになるわけですが、On Error Resume Next入れてるので、コンソールに「でばっぐ」と表示されます。

これをふまえて次。

Sub start()
    
    On Error Resume Next
    
    Call func
     
    Debug.Print ("でばっぐ")
    
End Sub

Function func()

    Dim i As Long
    
    i = i / 0
    
    Debug.Print ("functionのなか")

End Function

関数作ってその中でエラー出してます。
15行でエラーになって、「functionのなか」が表示されて最後に「でばっぐ」が表示される。

と思っていたのですが、

コンソールには「でばっぐ」しか表示されない。

「functionのなか」を表示するためには、関数の中にもOn Error Resume Next入れないといけないみたい。

ということを今さら知った。

まあ、よく考えればCall部分でエラーになっているわけで、次の行は Debug.Print (“でばっぐ”) となる。
当然といえば当然か。。。

今後使うことがあるかはわからないが、勉強になりました。

Follow me!

PAGE TOP
タイトルとURLをコピーしました