[VB] Do While

Murle

Cadet 2nd Year
Registriert
Juni 2001
Beiträge
23
Moin, ich habe da ein kleines Problem. Und zwar habe ich ein Textfeld, dass ich folgendermaßen überprüfen möchte:

Do While IsEmpty(txtBlaBlaBla.Text) = True Or IsNumeric _(txtBlaBlaBla.Text) = False
MsgBox "Bitte einen Zahlenwert in BlaBlaBla eingeben!,
vbOkOnly, "Wert eingeben"
Loop

So, wenn man es so macht und es existiert tatsächlich ein numerischer Wert, dann ist es ja sowieso kein Problem. Wenn nun aber einer dieser Bedingungen nicht erfüllt ist, kommt es im Moment noch zu einer Endlosschleife (welch ein Wunder).
Mir geht es um folgendes:

Ich möchte, falls in dem Feld kein Wert steht, dass der Coursor in das Textfeld gesetzt wird nach der MsgBox und der User erneut die Möglichkeit hat, einen Wert einzugeben.
Wenn er allerdings einen Wert eingegeben hat, der nicht numerisch ist, so möchte ich, dass dieser Wert im Textfeld markiert wird.

Also es geht mir darum, dass der User nach der Überprüfung wieder die Möglichkeit erhält seinen Wert zu korrigieren ohne das Programm neu starten zu müssen o.ä.

Gruß
Murle
 
Den Fokus neu setzen...

Hi Murle,

wie wär's mit txtBlaBlaBla.SetFocus nach deinem MsgBox-Aufruf ?

Helli
 
ich versteh nicht ganz, warum du ne do while schleife benutzt.
Ich kenn dein Programm jetzt nicht genau, aber kannst du die schleife nicht durch eine einfache if-abfrage ersetzen und falls der wert nicht stimmt ne fehlermeldung rausbringen, dann den focus setzen und schließlich die prozedur einfach mit exit sub beenden.
 
Danke erst mal für die schnellen Antworten. Ich werde die SetFocus Geschichte gleich noch mal ausprobieren...muss erst mal Früstücken :D.

@Schlumpf
Es muss nicht Do while sein, is ja auch egal, ob ich nun do oder if nehme. Es geht mir wie gesagt nur darum, dass ich nach einer Überprüfung wieder den Wert neu eingeben kann (nach einer Messagebox) und das nicht so eine VB-Fehlermeldung wie "Typen unverträglich" oder so kommt.
 
sodele

So, ich habe es jetzt mal so gemacht, wie Schlumpf es gesagt hat. Funktioniert besser und einfacher als mit der Do-Schleife ;) .

Jetzt stellt sich für mich noch eine Frage:
Kann ich es auch so machen, dass dann nicht nur der Coursor im Textfeld blinkt, sondern, dass schon automatisch der Text im Textfeld markiert wird?


Grüße
Murle
 
ganz einfach.

Habs gerade in etwa 2 Minuten durch ausprobieren rausgefunden, da hättest du auch selber drauf kommen können.
selektiert gesammten text in textfeld "text3":

Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
 
Danke

Ich danke vielmals. Manchmal habe ich ein gewisses Brett vorm Kopp und dann komme ich nicht auf solche Dinge. Aber danke noch mal für die Antwort :)
 
Hi,

hier noch ein Beispiel, wie man nur Zahlen zulässt, die box aber trotzdem noch mit Enter bestätigen kann und falsche eingegebene Zahlen mit der Rücktaste entfernen kann ;)

Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Or KeyAscii = 8 Then
Else
    If IsNumeric(Chr(KeyAscii)) = False Then
        KeyAscii = 0
    End If
End If
End Sub

Gruß

Toaster
 
Zurück
Oben