我在Excel中很缺乏經驗,我遇到了編程宏的問題。無論我是否設置了斷點並逐步結束,它都會停止,不會出現任何錯誤對話框。Excel VBA宏和錯誤消息
我錯過了什麼嗎?我是否必須明確地打開錯誤消息?
這樣的事情,在一個模塊中:
Function Provoke(XYZ As Integer) As Integer
Provoke = XYZ/0
End Function
功能是使用的公式在細胞內,這樣
=Provoke(4711)
我怎麼能讓他抱怨師零?
我在Excel中很缺乏經驗,我遇到了編程宏的問題。無論我是否設置了斷點並逐步結束,它都會停止,不會出現任何錯誤對話框。Excel VBA宏和錯誤消息
我錯過了什麼嗎?我是否必須明確地打開錯誤消息?
這樣的事情,在一個模塊中:
Function Provoke(XYZ As Integer) As Integer
Provoke = XYZ/0
End Function
功能是使用的公式在細胞內,這樣
=Provoke(4711)
我怎麼能讓他抱怨師零?
如果在從工作表的UDF調用時功能出現錯誤,你將不會看到任何錯誤,你消息 - 剛剛得到一個#VALUE錯誤返回到單元格
如果你打電話與VBA中的Sub相同的功能,您將看到該錯誤。
如果你想能夠返回更具體的錯誤消息,你需要更多的編碼。
E.g.
Function Provoke(XYZ As Integer)
On Error GoTo haveError
Provoke = XYZ/0
Exit Function
haveError:
'what type of error did we get?
Select Case Err.Number
Case 11: Provoke = CVErr(xlErrDiv0)
Case Else: Provoke = "Error!"
End Select
End Function
是的,你需要作出規定告訴VBA如果發生錯誤做什麼。
這個錯誤是因爲該行代碼中存在的:
Provoke = XYZ/0
沒有數是零整除,它會生成一個錯誤。基本數學:any number ÷ 0 = ∞
。
要驗證第一手資料,你可以嘗試這樣的事情來捕獲錯誤數量以及來源和說明:
Function Provoke(XYZ As Integer)
On Error Resume Next
Provoke = XYZ/0
If Err.Number <> 0 Then Provoke = "Error# " & Err.Number & " - generated by " & Err.Source & " - " & Err.Description
On Error GoTo 0
End Function
現在,如果你嘗試
=Provoke(4711)
你會得到結果是:
Error# 11 - generated by VBAProject - Division by zero
如果您還希望捕獲其他特定錯誤,請檢查http://onlinelibrary.wiley.com/doi/10.1002/9781 118257616.app3/pdf以及(我總是保持書籤)。 –
在你的第一段很好! – curious