2013-10-31 3 views
0

루프를 수행합니다 사용자 만 "P 플러스 4 임의의 숫자"를 입력Qestion 내가 하나 개의 까다로운 질문이

* (예 : P1234)에서 InputBox에 * 유효한 코드로 간주하고 매크로를들이받은 중지 유효한 코드가 입력 될 때까지 실행되지 않는 한. 나는 거의 다했다고 생각하지만 여전히 문제가 거의 없다. 내 코드는 다음과 같다.

Sub asd() 


Dim strcode As String 
Dim strnumber As string 

strcode = InputBox("what is your production code?") 

Do Until strcode = InStr(1, strcode, "P",vbBinaryCompare) And Len(strcode) = 5 _ 
and strnumber = Mid(strcode, 2) and IsNumeric (strnumber) 

strcode = InputBox("what is your production code?") 

Loop 

End Sub 

대단히 감사합니다!

+1

"한가지 까다로운 질문이 있습니다." 나는 '까다로운'부분이 처음부터 질문을 찾는다고 추정한다. ;) – Brian

+1

'Do Until Ucase (strcode)는 "P ####"' –

+0

과 같이 정말 고마워요 !!!! – Mars

답변

0

나는 @ TimWilliam의 주석을 사용하고, 끔찍한 혼란을 줄이기 위해 Do...Loop 문 코드를 재구성 할 것입니다. 귀하의 하위이 귀결 :

Dim strcode As String 
Do 
    strcode = InputBox("what is your production code?") 
Loop Until UCase(strcode) Like "P####" 

팁 : 언제 당신이 과정에서 여러 장소에서 코드의 동일한 부분을 다시 작성 자신을 발견, 그때는 아마 나중에 후회하는 것입니다. strcode = InputBox("what is your production code?") 두 번 쓴 ... 나중에 질문을 변경하려면 어떻게해야합니까? 두 곳 모두 변경해야합니다. 그렇지 않으면 이상하게 보일 것입니다. 주어진 코드 행을 한 번만 쓸 수 있도록 코드를 재구성하는 것이 좋습니다.

+0

정말 고마워요 !! – Mars

+0

나는 단지 투표하는 법을 알고있다! 그것에 관해 유감스럽게 생각해 라!! – Mars