直到循环InputBox无限循环

我正在创build一个概率macros,用户在卡牌游戏中input玩家数量。 如果inputstring(例如Joe ),非整数(例如15.67 )或小于0的整数(例如-25 ),InputBox应该循环。 但是,大于0的整数应该终止循环。 (我必须强制杀死Excel来停止InputBox而不pipe用户input。)

一旦input一个大于0的整数,我想让InputBoxclosures/退出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()总是返回一个string,所以TypeName()将总是返回"String"

但是你可以testing返回的string是否是一个整数。 首先,您可以使用IsNumeric()来testingstring是否是数字值。 然后,您可以安全地将其转换为DoubleInteger 。 事实上,你可以把它投给两者,然后将它们相互比较。 如果他们是相同的,你有一个整数值。 例如:

 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