Anzeige
Archiv - Navigation
1680to1684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UF Textbox prüfen

UF Textbox prüfen
08.03.2019 17:12:45
Peter
Hallo ihr Excelspezialisten,
ich benötige wieder einmal eure Hilfe.
Ich habe eine UF bei der die TextBox1 mit dem Wert "Bitte Datum eintragen" gefüllt wird und in TextBox1 wird Text blau markiert.
Wird nun ein falscher Wert eingegeben, soll die Textbox1 wieder mit Wert "Bitte Datum eintragen" gefüllt und Textbox1 markiert werden (z.B. Datumwert nur teilweise oder irgend ein Wert).
Der bisherige Code:
'Anfang alles Textbox1
'gibt bei Wechsel Punkt nach Tag und Monat ein Begrenzung auf 10 Stellen für Datum
<pre>Private Sub TextBox1_Change()
If TextBox1 = "" = True Then Exit Sub
'Anfang Datum . Vorgabe und Begrenzung auf 10 Stellen
If TextBox1.Tag = "1" = True Then Exit Sub
If Len(TextBox1) = 2 Then
If InStr(TextBox1, ".") = 0 Then TextBox1 = TextBox1 & "."
ElseIf Len(TextBox1) = 5 Then
If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", "")) < 2 Then
TextBox1 = TextBox1 & "."
End If
End If
TextBox1.MaxLength = 10
'Ende Datum . Vorgabe und Begrenzung auf 10 Stellen
End Sub</pre>
'Function wird ausgeführt in Textbox1_BeforeUpdate
Function Check_Datum(Tb As MSForms.TextBox) As Boolean
If IsDate(Tb.Text) Then
Tb.Text = CDate(Tb.Text)
If Tb.Text Like "##.##.####" Then Exit Function
End If
MsgBox "Eingabe nicht korrekt!"
Check_Datum = True 'springt wieder ins Feld
Tb.SelStart = 0
Tb.SelLength = Len(Tb.Text)
End Function</pre>
<pre>Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = Check_Datum(TextBox1) 'True --> springt wieder ins Feld 'Check_Datum = o.a. Function
End Sub</pre>
'prüft beim Verlassen ob Label5 "Tgb.-Nr. ect." leer ist wenn ja dann wird Textbox1 übersprungen auf Textbox3
<pre>Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox6.SetFocus
End Sub</pre>
'Ende alles Textbox1
Was muss hier bitte geändert werden. Besten Dank.
Gruss
Peter

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF Textbox prüfen
08.03.2019 17:30:41
Hajo_Zi
Hallo Peter,
benutze das Exit Ereignis
If not Isdate(Textbox1)then
Textbox1="Bitte Datum eintragen"
Cancel=True
End if

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: UF Textbox prüfen
08.03.2019 17:41:30
Peter
Hallo Hajo,
funktioniert leider nicht.
Wenn die Datumeingabe nicht korrekt erfolgt, dann kommt die Meldung "MsgBox "Eingabe nicht korrekt!".
Hier müsste m. E. irgendwie eingefügt werden, dass Textbox wieder mit dem Text "bitte Datum eintragen" gefüllt wird und ganzer Text markiert wird.
Aber wie?!
Gruss
Peter
Anzeige
AW: UF Textbox prüfen
08.03.2019 17:44:57
Hajo_Zi
Hallo Peter,
Gut dazu kann ich nichts schreiben. Was wohl damit zusammenhängt das meinb Code keine MSGBOX hat.
Gruß Hajo
AW: UF Textbox prüfen
08.03.2019 17:51:27
Peter
Hallo Hajo,
in der Function Check_Datum in der 5. Zeile ist die MsgBox.
Gruss
Peter
AW: UF Textbox prüfen
08.03.2019 17:54:03
Hajo_Zi
Hallo Peter,
mein Vorschlag gefällt Dir also nicht. Ich bin dann raus.
Zu Deinem Hinweis kann icxh auch nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.
Viel Erfolg noch.
Gruß Hajo
Anzeige
AW: UF Textbox prüfen
09.03.2019 05:55:16
Peter
Hallo Werner,
guten Morgen. Vielen, vielen Dank. Das funktioniert ja super.
Probiere gerade, wie es in meiner UF weiter geht. Ggf. werde ich Dich nochmals bitten mir zu helfen.
Gruss
Peter
Gerne u. Danke für die Rückmeldung. o.w.T.
09.03.2019 09:17:21
Werner
AW: doch noch nicht erledigt
10.03.2019 10:44:36
Peter
Hallo Werner,
im Prinzip habe ich meine UF fertig.
Wenn ich die beiden Codes "TextBox1_Change" und "TextBox6_AfterUpdate" deaktiviere funktioniert es über Userform_Activate, dass die jeweiligen Textboxes TB1 bzw. TB6 markiert werden.
Ich möchte aber bei der Eingabe in der TB1 die Datumeingabe-Kontrolle haben und wenn diese abgeschlossen ist, soll TB6 markiert werden.
Wenn dann in der Tabelle "Buchen_333 333 33" in Zelle B10 Datum steht soll wie in Userform_activate deklariert die TB6 markiert werden.
Leider funktioniert dies nicht.
Kannst Du mir hierbei bitte helfen.
Datei anbei: https://www.herber.de/bbs/user/128262.xlsm
Besten Dank
Gruss
Peter
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
10.03.2019 11:05:47
Peter
Hallo Werner,
ich habe die Lösung gefunden:
Folgende Codes habe ich eingefügt:
<pre>Private Sub TextBox1_AfterUpdate()
Dim wb As Workbook
Dim wsTB As Worksheet
Dim aktTB As String
Me.TextBox8 = "Buchung_333 333 33" 'nur für Test - später Übernahme aus anderer UF
aktTB = Me.TextBox8
Set wb = ThisWorkbook
Set wsTB = wb.Worksheets(aktTB)
With wsTB
'Anfang Prüfung Datum nicht leer und Bestand leer und noch keine Buchung
If .Range("B10") > "" And .Range("H10") = "" And .Range("B11") = "" Then 'Datum nicht leer und Bestand leer und noch keine Buchung
Me.TextBox6.SetFocus
Me.TextBox6.SelStart = 0 'markiert den Text
Me.TextBox6.SelLength = Len(Me.TextBox6) 'markiert den Text
End If
'Ende Prüfung Datum nicht leer und Bestand leer und noch keine Buchung
End With
End Sub</pre>
<pre>Private Sub TextBox1_Change()
Dim wb As Workbook
Dim wsTB As Worksheet
Dim aktTB As String
Me.TextBox8 = "Buchung_333 333 33" 'nur für Test - später Übernahme aus anderer UF
aktTB = Me.TextBox8
Set wb = ThisWorkbook
Set wsTB = wb.Worksheets(aktTB)
With wsTB
'Anfang Prüfung Datum nicht leer und Bestand leer und noch keine Buchung
If .Range("B10") = "" And .Range("H10") = "" And .Range("B11") = "" Then 'Datum nicht leer und Bestand leer und noch keine Buchung
If Me.TextBox1 = "" Then Exit Sub
If Me.TextBox1.Tag = "1" Then Exit Sub
If Len(Me.TextBox1) = 2 Then
If InStr(Me.TextBox1, ".") = 0 Then Me.TextBox1 = Me.TextBox1 & "."
ElseIf Len(Me.TextBox1) = 5 Then
If Len(Me.TextBox1) - Len(Application.Substitute(Me.TextBox1, ".", "")) < 2 Then
Me.TextBox1 = Me.TextBox1 & "."
End If
End If
Me.TextBox1.MaxLength = 10
If Len(Me.TextBox1) = 10 Then 'prüft die Länge TB1, wenn 10 dann gehe zu TB6
Me.TextBox6.SetFocus
Me.TextBox6.SelStart = 0
Me.TextBox6.SelLength = Len(Me.TextBox6)
End If
End If
End With
<pre>Private Sub TextBox6_AfterUpdate()
If IsNumeric(Me.TextBox6) Then
Me.TextBox6 = Format(CDbl(Me.TextBox6), "#,##0.00 €")
End If
End Sub</pre>
und in Commandbutton1 zum Schluss noch Userform_Activate eingefügt.
Jetzt funktioniert es einwandfrei.
Besten Dank nochmals und ein schönes Wochenende.
Gruss
Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige