On Errorステートメントは,ラベルの次の行から始まるエラー発生時の処理を有効にします。実行時にエラーが発生すると,ここで設定した分岐先に制御が移り,処理が実行されます。ただし,構文エラーが発生した場合には設定した分岐先には制御が移りません。分岐先のラベルはOn Errorステートメントと同じプロシージャ内に存在しなければなりません。
On Error GoTo 0を指定しなければ,ラベルの次の行から始まるエラー発生時の処理はプロシージャの終了まで有効になります。
補足
On Errorステートメントで指定したラベルに分岐する場合は,基本的に,実行エラーになりうるステートメントやコマンドが実行エラーとなったときです。