2016-04-02 5 views
1

Subという名前で、エラーのある回線の識別に関する素晴らしい解決策を探しています。Inter-Sub ErrorLine

Subでエラーが発生した行は表示されず、Subの行だけが表示されます。

Private Sub TestThis() 
    On Error GoTo ErrorHandler 
a1: 
    Call SubError 
    Exit Sub 
ErrorHandler: 
    Debug.Print "Error: " & Erl & ", " & Err & ", " & Error(Err) 
End Sub 

Private Sub SubError() 
b1: 
    Err.Raise Number:=2000, Description:="MyError" 
End Sub 

私はerror_lineと呼ばれるグローバル変数を持って、単にコードを適切に変更されて思い付いたソリューション。

あなたはこれのための任意のより良い解決策を知っていますか?

+2

エラーハンドラを 'SubError'に入れましたか?私はそれを「好きな人」と呼ぶのではないが、あなたが気にしているレベルでそれを扱うだろう。 – Comintern

+0

すべてのレベルでエラーハンドラをトリガすることは、より完全な解決策になります。ありがとう! – Bernat

答えて

1

VBAのベストプラクティスIMHOは、プロシージャごとにエラーハンドラを絶対にに入れることです。そして、すべてのエラーハンドラで、エラーを処理している別のセントラルルーチンを呼び出すことができます(ログや何かへの書き込みなど)。

ああ、本当にベストプラクティスは、VBAの使用を最小限に抑えることです。) - 私は本当の意味です:VBAを小さなプロジェクトのスクリプト言語のように扱います。本当に大きなプロジェクトの場合は、C#またはVB.NETを使い、独自のアドインまたは実行可能ファイルを作成してください。

関連する問題