Ich bin neu mit VBA-Loops. Was ich versuche, ist eine do-Schleife und Eingabefeld-Prozedur, die nach einem Produktcode fragt, bis ein gültiger eingegeben wird. Der Code sollte mit dem Buchstaben P beginnen, gefolgt von vier Ziffern. Bei einer ungültigen Codeeingabe sollte eine Meldung angezeigt werden, die den Benutzer darüber informiert, warum die Eingabe ungültig ist.VBA Do Schleife und Input Box Inhalt funktioniert nicht
Ich habe das folgende Verfahren codiert. Es funktioniert, wenn der Benutzer zum Beispiel p9887 eingibt.
Wenn jedoch der Benutzer o899876 oder p877789, die Nachricht gibt „Product Code sollte fünf Zeichen lang sein“ und dann hat der Benutzer wieder einzugeben. Wenn der Benutzer in diesem zweiten Versuch p9876 eingibt, obwohl er alle Kriterien erfüllt, lautet die Nachricht, die von meiner Prozedur kommt: "Die letzten vier Zeichen sollten Ziffern sein", und es bleibt in der Schleife hängen, in der der Benutzer eingeben muss Eingabe erneut, und die gleiche Nachricht kommt auf.
Jede Einsicht, was ich falsch mache, wird sehr geschätzt!
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
************************ Hier ist eine andere Art von Code, der sauberer ist, aber immer noch tut das gleiche Problem.
Wie löst das sein Problem? –
Ah ... Ich verstehe. Die Musterübereinstimmung macht alle seine Überprüfungen obsolet. –
ja. natürlich könnte es auch so viel "Ahnung" wie nötig gemacht werden.Ich werde eine Bearbeitung in dieser Richtung posten – user3598756