验证输入框中的用户输入
Validating user input in inputbox
当我 运行 以下代码段并输入可接受的值时,我得到了想要的结果。
do while len(strselect) = 0 'or strselect<>"1" or strselect<>"2" or strselect<>"3"
strselect = inputbox ("Please select:" &vbcrlf&vbcrlf&_
"1. Add an entry" &vbcrlf&vbcrlf&_
"2. Remove an entry" &vbcrlf&vbcrlf&_
"3. Search for an entry" &vbcrlf, "Contact Book")
if isempty(strselect) then
wscript.quit()
elseif strselect="1" then
wscript.echo "You chose 1"
elseif strselect="2" then
wscript.echo "You chose 2"
elseif strselect="3" then
wscript.echo "You chose 3"
end if
loop
但是,如果我尝试进一步限制验证过程(通过在 do while
条件中包含注释),并再次 运行 代码段,我会触发相应的 if
条件,但 do
循环继续,而不是退出。
我已经尝试在 do
循环 strselect
条件下使用 isnumeric
和 cstr
,但没有任何乐趣......我错过了什么才能得到该死的东西退出循环的事情?
你的条件逻辑有问题
condition 1 condition 2 condition 3 condition 4
v----------------v v------------v v------------v v............v
do while len(strselect) = 0 or strselect<>"1" or strselect<>"2" or strselect<>"3"
根据 strselect 中的值,您有
value c1 c2 c3 c4
len=0 <>"1" <>"2" <>"3" c1 or c2 or c3 or c4
-------------------------------------- --------------------
empty true true true true true
1 false false true true true
2 false true false true true
3 false true true false true
other false true true true true
在每一行中,您至少有一个条件评估为 true
,并且当您将条件与 Or
运算符连接时(如果至少有一个值为真,则评估为真) ,完整条件被评估为真并且代码不断循环
你只需要改变条件
Do While strselect<>"1" And strselect<>"2" And strselect<>"3"
Do While Not (strselect="1" Or strselect="2" Or strselect="3")
....
当我 运行 以下代码段并输入可接受的值时,我得到了想要的结果。
do while len(strselect) = 0 'or strselect<>"1" or strselect<>"2" or strselect<>"3"
strselect = inputbox ("Please select:" &vbcrlf&vbcrlf&_
"1. Add an entry" &vbcrlf&vbcrlf&_
"2. Remove an entry" &vbcrlf&vbcrlf&_
"3. Search for an entry" &vbcrlf, "Contact Book")
if isempty(strselect) then
wscript.quit()
elseif strselect="1" then
wscript.echo "You chose 1"
elseif strselect="2" then
wscript.echo "You chose 2"
elseif strselect="3" then
wscript.echo "You chose 3"
end if
loop
但是,如果我尝试进一步限制验证过程(通过在 do while
条件中包含注释),并再次 运行 代码段,我会触发相应的 if
条件,但 do
循环继续,而不是退出。
我已经尝试在 do
循环 strselect
条件下使用 isnumeric
和 cstr
,但没有任何乐趣......我错过了什么才能得到该死的东西退出循环的事情?
你的条件逻辑有问题
condition 1 condition 2 condition 3 condition 4
v----------------v v------------v v------------v v............v
do while len(strselect) = 0 or strselect<>"1" or strselect<>"2" or strselect<>"3"
根据 strselect 中的值,您有
value c1 c2 c3 c4
len=0 <>"1" <>"2" <>"3" c1 or c2 or c3 or c4
-------------------------------------- --------------------
empty true true true true true
1 false false true true true
2 false true false true true
3 false true true false true
other false true true true true
在每一行中,您至少有一个条件评估为 true
,并且当您将条件与 Or
运算符连接时(如果至少有一个值为真,则评估为真) ,完整条件被评估为真并且代码不断循环
你只需要改变条件
Do While strselect<>"1" And strselect<>"2" And strselect<>"3"
Do While Not (strselect="1" Or strselect="2" Or strselect="3")
....