VBAループで新しくなった。私がしようとしているのは、有効なものが入力されるまでプロダクトコードを尋ねるdoループと入力ボックスプロシージャです。コードは文字Pで始まり、4桁の数字が続くはずです。無効なコード入力の場合、それが無効である理由をユーザーに知らせるメッセージを表示する必要があります。VBAループと入力ボックスの内容が正しく動作しない
私は以下の手順をコードしています。例えば、ユーザがp9887と入力すると動作します。
ユーザーがタイプo899876またはp877789ただし、それは 「プロダクトコードが5つの文字を持たなければならない」とし、ユーザーが再び入力に持つメッセージ を与えます。この2回目の試行では、ユーザータイプp9876がすべての基準を満たしている間に、自分のプロシージャから表示されるメッセージが「最後の4文字は数字でなければなりません」というメッセージが表示され、ユーザーが入力しなければならないループ再度入力し、同じメッセージが表示されます。
私が間違っていることについての洞察は非常に高く評価されています!
Option Explicit
Public Sub ProductCode()
Dim strInput As String
Dim intFrstLetter As Integer
Dim intLastFour As String
Dim strFrstLetter As String
Dim test As String
Dim blDone As Boolean
strInput = InputBox("Please enter product code")
intFrstLetter = InStr(1, strInput, "p")
intLastFour = Right(strInput, 4)
strFrstLetter = Left(strInput, 1)
Do
If strFrstLetter = "p" Then
If Len(strInput) <> 5 Then
MsgBox "Product code should have five characters."
strInput = InputBox("Please enter product code")
Else
If IsNumeric(intLastFour) Then
MsgBox "Thank You"
blDone = True
Exit Do
Else
MsgBox "The last four characters should be digits"
strInput = InputBox("Please enter product code")
If strFrstLetter <> "p" Then
MsgBox "Product code should start with the letter P"
strInput = InputBox("Please enter product code")
End If
End If
End If
End If
Loop Until blDone = True
End Sub
************************ここでは、クリーンなコードの別のタイプであるが、それでも同じ問題を行います。
Public Sub ProductCode()
Dim strInput As String
Dim intFrstLetter As Integer
Dim intLastFour As String
Dim strFrstLetter As String
Dim blDone As Boolean
strInput = InputBox("Please enter product code")
intFrstLetter = InStr(1, strInput, "p")
intLastFour = Right(strInput, 4)
strFrstLetter = Left(strInput, 1)
Do
If strFrstLetter = "p" Then
If Len(strInput) = 5 Then
If IsNumeric(intLastFour) = True Then
MsgBox "Thank You"
Exit Do
Else
MsgBox "The last four characters should be digits"
strInput = InputBox("Please enter product code")
End If
Else
MsgBox "Product code should have five characters"
strInput = InputBox("Please enter product code")
End If
Else
MsgBox "Product code should start with the letter P"
strInput = InputBox("Please enter product code")
End If
Loop
これはどのようにして彼の問題を解決しますか? –
ああ...そうだ。パターンの一致はすべての彼のチェックを廃止します。 –
はい。もちろん、それは必要に応じて多くの "クライミー"にすることもできます。私はこの方向に編集を投稿します – user3598756