[英]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.