2013-10-31 50 views
0

我有一個棘手的問題:只有用戶輸入「P加4個隨機數字」Qestion約VBA做循環

*(如:P1234) *到輸入框會視爲一個有效的代碼並停止乳寧宏除非它直到輸入有效的代碼纔會運行。我想我差不多完成了,但仍然沒有問題。這裏是我的代碼:

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)Like「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