我想了解爲什麼下面的代碼沒有給我預期的行爲。奇怪的流程與錯誤處理與VBA輸入框?
我想問用戶一個十進制數(雙)。我在下面有一個錯誤處理程序,但是這個程序的行爲方式,當我輸入一個字或數字時它仍然會拋出錯誤。當我沒有放入任何東西時它會捕獲錯誤(空輸入)。
當我刪除if條件,它會按預期工作,但我不知道如何捕捉空的用戶輸入。
任何想法將不勝感激!
Sub MainTask()
Dim userInput As Double
TryAgain:
On Error GoTo ErrorHandler
userInput = InputBox("What is the amount purchased you would like to search for? ($)")
If Len(userInput) = 0 Then
Exit Sub
End If
MsgBox "You have entered a valid value!"
Exit Sub
ErrorHandler:
MsgBox "Please enter a valid value."
GoTo TryAgain
End Sub
對此深感抱歉。它是'vba' – MathHopeful
當你在錯誤處理程序中的'GoTo TryAgain'時,你仍然在當前錯誤的錯誤處理程序中,所以後面的錯誤是未處理的。用'Resume'代替'GoTo TryAgain'會解決這個問題,但它不是一個很好的做事方式,例如用戶會在取消按鈕上出現錯誤,你應該使用一個字符串並用'「」 'IsNumeric()' –
InputBox返回一個字符串。您不能將返回值分配給Double。如果它不是一個數字,它會拋出一個錯誤。 –