2016-11-09 39 views
1

これは非常に難しい問題です。Excel VBAのFor Toループにエラーハンドラを挿入しています。しかしExcel VBAでのエラーハンドラのインデント

For i = 0 to n 
    On Error GoTo ErrorHandler: 
     '~~> code here 
    ErrorHandler: 
     '~~> code here 
     Resume NextLoop 
    NextLoop: 
Next 

、エクセルVBAが自動的にエラーハンドラのインデントを取り消す::私はそのようなことを、ループの内容はインデントしたい

For i = 0 to n 
    On Error GoTo ErrorHandler: 
     '~~> code here 
ErrorHandler: 
     '~~> code here 
     Resume NextLoop 
NextLoop: 
Next 

私はツール」のオプション「自動インデント」を選択解除しようとしています">" Options ">" Editor "しかし、これはうまくいきません。

どうすればこの問題を回避できますか?

+2

Excelでラベルのインデントを制御することはできません。これはデフォルトで固定され、左側に固定されます。その理由は、それらをより簡単に見つけることです。 –

+0

@Victor Moraesを参照してください。これを回避する方法はありますか? –

+0

私は正直には分かりませんが、「それはそれほどきれいだと思う」以外に、なぜあなたはそれをしたいのですかと聞くかもしれません。 –

答えて

1

GoTo Labelを使用するコードは、わかりやすくエラーが発生する恐れがあります。 GoTo Labelが適切かもしれない私が知る唯一の状況は、復帰する意思がない致命的なエラー終了です。エラーから飛び降りて飛び降りようとするのは非常に難しく、2,3ヶ月後に戻ってくると理解しにくいです。

エラーが発生する可能性のあるコードに複数のステートメントがありますか?もしそうなら、エラーハンドラはどのエラーを処理しているかをどのように知るでしょうか?

私は賛成:

On Error Resume Next    ' Suspend normal error handling 
Statement that might throw an error 
On Error GoTo 0      ' Restore normal error handling 
If Err.Number <> 0 then 
    ' Code to handle error 
End If 

Err.NumberErr.Descriptionの値は、エラーが何であるかを伝え、特定のエラー処理コードを記述することができます。

メインコードからエラー処理を行うと、メインコードがきれいに保たれると主張する人もいます。この議論にはいくつかメリットがあります。何十もの潜在的なエラーがある場合、分析は複雑になり、正常な経路を分離することが困難になります。しかし、私の経験上、これは非常に珍しいことです。おそらく、あなたのファイルのリストがあり、それらのファイルのいくつかは開かないかもしれません。ファイルが開かれてもコードが何もできない理由はたくさんあります。できることはディスプレイErr.Descriptionで、次のファイルに移動するだけです。