我想了解为什么下面的代码没有给我预期的行为。奇怪的流程与错误处理与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。如果它不是一个数字,它会抛出一个错误。 –