2016-09-30 5 views
0

다음 스 니펫을 실행하고 수용 가능한 값을 입력하면 원하는 결과가 나타납니다. 그러나입력란의 사용자 입력 유효성 확인

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 조건을 isnumericcstr를 사용하여 시도했다 ... 나는 루프를 종료하려면 경비정을 얻을 실종 무엇?

답변

0

당신은, 당신이 strSelect에 내부 값에 따라 조건

  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" 

의 논리에 문제가 당신이 적어도 하나 개의 조건이 true로 평가 한 각 줄에

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 

하고, Or 연산자로 조건을 연결하면 (적어도 하나의 값이 참이면 true로 평가됨) 전체 조건은 true로 평가되고 코드는 루핑을 계속 수행합니다

,363,210

는 당신은 너무 많은 MC ND 조건을 잘 설명 대답을

Do While strselect<>"1" And strselect<>"2" And strselect<>"3" 
Do While Not (strselect="1" Or strselect="2" Or strselect="3") 
.... 
+0

감사를 변경해야합니다. 어젯밤에 좌절 할 정도로 결정할 수 없었던 것처럼, 나의 오류는 지금 명백하다. 나는 논리적 인 운영자와 나의 논리를 개정 할 것이다! 서둘러 ... 다시 한 번 감사드립니다! :) –