Do Until Loop InputBox 无限循环
Do Until Loop InputBox infinitely loops
我正在创建一个概率宏,用户可以在其中输入纸牌游戏中的玩家数量。如果我输入字符串(例如,Joe
)、非整数(例如,15.67
)或小于 0 的整数(例如,-25
),InputBox 应该循环。但是,大于 0 的整数应该终止循环。 (无论用户输入如何,我都必须强制 kill Excel 停止 InputBox。)
我希望 InputBox 在输入大于 0 的整数后关闭/退出 Sub。我在这里做错了什么?
Sub GenerateCards()
Players = InputBox("How many players? Please enter an integer.")
Do Until TypeName(Players) = "Integer" And Players > 0 ' why does this loop even if both conditions are met (ex, Players=5?)
Players = InputBox("How many players? Please enter an integer.")
Loop
End Sub
InputBox()
总是 return 一个字符串,所以 TypeName()
总是 return "String"
.
但是您可以 测试 returned 的字符串是否为整数。首先,您可以使用 IsNumeric()
来测试字符串是否为数值。然后,您可以安全地将其转换为 Double
或 Integer
。事实上,您可以将其转换为两者,然后将它们相互比较。如果它们相同,则您有一个整数值。例如:
Sub GenerateCards()
Do
Players = InputBox("How many players? Please enter an integer.")
If IsNumeric(Players) Then
If CDbl(Players) = CLng(Players) And Players > 0 Then
' Integer > 0 entered. Exit loop...
Exit Do
End If
End If
Loop
End Sub
我正在创建一个概率宏,用户可以在其中输入纸牌游戏中的玩家数量。如果我输入字符串(例如,Joe
)、非整数(例如,15.67
)或小于 0 的整数(例如,-25
),InputBox 应该循环。但是,大于 0 的整数应该终止循环。 (无论用户输入如何,我都必须强制 kill Excel 停止 InputBox。)
我希望 InputBox 在输入大于 0 的整数后关闭/退出 Sub。我在这里做错了什么?
Sub GenerateCards()
Players = InputBox("How many players? Please enter an integer.")
Do Until TypeName(Players) = "Integer" And Players > 0 ' why does this loop even if both conditions are met (ex, Players=5?)
Players = InputBox("How many players? Please enter an integer.")
Loop
End Sub
InputBox()
总是 return 一个字符串,所以 TypeName()
总是 return "String"
.
但是您可以 测试 returned 的字符串是否为整数。首先,您可以使用 IsNumeric()
来测试字符串是否为数值。然后,您可以安全地将其转换为 Double
或 Integer
。事实上,您可以将其转换为两者,然后将它们相互比较。如果它们相同,则您有一个整数值。例如:
Sub GenerateCards()
Do
Players = InputBox("How many players? Please enter an integer.")
If IsNumeric(Players) Then
If CDbl(Players) = CLng(Players) And Players > 0 Then
' Integer > 0 entered. Exit loop...
Exit Do
End If
End If
Loop
End Sub