[英]VBA Excel Do While Loop Runtime Error
在Excel中使用VBA进行编码非常新,我要做的是有一个Do While循环,该循环需要用户输入,如果它不是数字或小于0,则会返回错误消息并再次提示用户输入一个值,直到达到前提条件为止。 我尝试了几种方法,但似乎无法弄清其背后的细节。 我的代码当前如下所示:
Function getQuantity(prompt)
Dim quantity As String
quantity = InputBox(prompt)
Do While quantity < 0
If Not IsNumeric(quantity) Then
MsgBox ("Incorrect Value, Numbers Only Please!")
quantity = InputBox(prompt)
End If
Loop
End Function
当这样写的时候,我得到运行时错误。
如果我只使用:
Function getQuantity(prompt)
Dim quantity As String
quantity = InputBox(prompt)
If Not IsNumeric(quantity) Then
MsgBox ("Incorrect Value, Numbers Only Please!")
quantity = InputBox(prompt)
End If
End Function
这样,它可以执行我想要的操作,只是它不在循环中才再次提示一次。 基本上,我希望它循环播放直到它得到一个等于或大于0的数字,并显示错误消息并再次提示用户,直到发生这种情况为止。
在此先感谢您的帮助!
对您的代码进行了几处更改:
您可能还需要考虑允许用户使用输入框中的“取消”选项。 这将返回一个空字符串,并且如果用户单击“取消”并不断被告知输入数字,那么这将使用户感到困惑和烦恼。 在这种情况下,您可能会返回默认值,具体取决于您需要如何使用此函数。
另外,该功能当前允许用户输入整数和小数,大概就是您所需要的。 为函数(及其参数)使用特定类型是个好主意,因此将As String添加到提示参数,或者将As Double添加到函数将使代码更清晰,并为您提供更多的编译时安全性。
Function getQuantity(prompt)
Dim quantity As String
quantity = InputBox(prompt)
Do While Not IsNumeric(quantity) Or Val(quantity) < 0
MsgBox ("Incorrect value, please enter a valid number of zero or above")
quantity = InputBox(prompt)
Loop
getQuantity = Val(quantity)
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.