我試圖找到行號,我的代碼崩潰,但在這個網站上的許多解釋似乎很複雜,我的水平。在VBA中查找錯誤行號
我的代碼基本如下,我不知道它在哪裏打破。
Sub1
Call function1
Call function2
End Sub
本網站上的其他答案似乎只是一個簡短的功能。但是我不知道在哪裏調用我的代碼中的函數或如何獲得彈出消息。如果我打算把我的sub1代碼放到他們的函數中,我也不知道在哪裏。初學者在這裏。
我試圖找到行號,我的代碼崩潰,但在這個網站上的許多解釋似乎很複雜,我的水平。在VBA中查找錯誤行號
我的代碼基本如下,我不知道它在哪裏打破。
Sub1
Call function1
Call function2
End Sub
本網站上的其他答案似乎只是一個簡短的功能。但是我不知道在哪裏調用我的代碼中的函數或如何獲得彈出消息。如果我打算把我的sub1代碼放到他們的函數中,我也不知道在哪裏。初學者在這裏。
如果你的代碼沒有行號,那麼VBA沒有辦法給你行號。
您可以寫VBA,使它看起來1980年般的做到這一點:
Sub1
On Error GoTo 100
10 Call Function1
20 Call Function2
90 Exit Sub
100 Debug.Print Err.Message & " on line " & Erl
End Sub
但你並不想這樣做。真的,你不需要需要一個行號。
您需要更小的功能,處理運行時錯誤。
On Error GoTo ErrHandler
當運行時錯誤發生時,執行跳轉到稱爲ErrHandler
的線標籤。
...
Exit Sub
ErrHandler: '<< the line label is denoted with a colon
那個處理程序是怎麼回事?如果你正在調試,你可能只想Stop
執行有和檢查當地人:
Stop
下一行再加入Resume
,然後按F8 到一步到它。 Resume
將返回到導致錯誤的呼叫。如果這是一個函數調用,那麼你需要處理該函數中的運行時錯誤。
確保你永遠不會離開Stop
和Resume
說明在生產代碼:
Sub WhenWillThisEnd()
On Error GoTo ErrHandler
Debug.Print 42/0
Exit Sub
ErrHandler:
Resume 'jumps back to the line that caused the error
Resume Next 'resumes execution on the line right after the one that went boom
End Sub
儘管編程VBA已經有十多年了,但我並不瞭解'Erl'。我喜歡Stack Overflow - 你每天都會學到新的東西。 –
我也是,5年在VBA,現在只有我想到這個。曾經有一段時間,我看到某人的代碼用數字標註每一行,並想到爲什麼h ***會有人標出每一行......現在我知道爲什麼了:D – Rosetta
你不採取當你按下'Debug'提示上發生錯誤的代碼?也應該是'Sub One()'而不是'Sub1' – newguy
「我的代碼基本上如下」。有什麼理由爲什麼你發佈的東西「基本上」是你的代碼而不是你的實際代碼? –