Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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

Excel VBA Userform Textbox in bestimmtes Format

Excel VBA Userform Textbox in bestimmtes Format
21.09.2018 23:59:44
Oliver
Hallo Leute,
ich bin am verzweifeln, weil ich seit 2 Tagen nicht zu einer Lösung komme.
Ich habe eine Userform, mit der ich eine Tabelle befülle. In der Userform habe ich eine TextBox in der immer ein bestimmtes Format vom User eingegeben werden soll.
Die Zeichenfolge beginnt mit einem Großbuchstaben (B, C oder S) gefolgt von zwei Zahlen. Dann ein Punkt, drei weitere Zahlen, ein Punkt und zu Letzt zwei Zahlen.
Beispiel: C99.123.67
Ich möchte gerne das Fehleingaben direkt bei der Eingabe abgefangen werden (KeyPress) und die Punkte automatisch bei der Eingabe eingefügt werden.
Bei einer Textbox mit Zeiteingabe habe ich das hinbekommen, nur in diesem Fall geht gar nichts :(
Ich bedanke mich schon mal für jede Hilfe.
Gruß Oliver

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Userform Textbox in bestimmtes Format
22.09.2018 00:09:17
Gerd
Hallo Oliver,
hat die Blattvariable im Userformmodul keine Gültigkeit?
Dim PersonalDaten
Set Personaldaten= ThisWorkbook.Worksheets(".......")
Gruß Gerd
AW: AW zu falschem Thread, sorry
22.09.2018 00:16:45
Gerd
AW: Excel VBA Userform Textbox in bestimmtes Format
22.09.2018 00:51:18
Oberschlumpf
Hi Oliver,
füge diesen Code ins Modul deines Userforms ein
(beachte: bei mir heißt die Textbox = TextBox1 - wenn sie bei dir einen anderen Namen hat, musst du TextBox1 gegen deinen Namen austauschen)
Private Sub TextBox1_Change()
If pboUndo = True Then
pboUndo = False
Exit Sub
End If
With TextBox1
Select Case Len(.Text)
Case 1
If Asc(.Text) >= 65 And _
Asc(.Text)  "B" And _
.Text  "C" And _
.Text  "Z" Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
Else
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
Case 2, 3
If Not IsNumeric(Right(.Text, 1)) Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
If Len(.Text) = 3 Then
pboUndo = True
.Text = .Text & "."
End If
Case 5, 6, 7
If Not IsNumeric(Right(.Text, 1)) Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
If Len(.Text) = 7 Then
pboUndo = True
.Text = .Text & "."
End If
Case 9, 10
If Not IsNumeric(Right(.Text, 1)) Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
Case 11
pboUndo = True
.Text = pstrTxt
Exit Sub
End Select
pstrTxt = .Text
End With
End Sub

Private Sub UserForm_Activate()
pstrTxt = TextBox1.Text
End Sub

Hilfts?
Wenn nicht, zeig uns bitte per Upload deine Excel-Datei mit deinem Userform.
Ciao
Thorsten
Anzeige
AW: Excel VBA Userform Textbox in bestimmtes Format
22.09.2018 01:05:15
Oliver
Danke Thorsten,
werde es gleich morgen versuchen und hoffe es funktioniert. Melde mich dann.
Gruß
ups, hab was vergessen
22.09.2018 09:58:55
Oberschlumpf
Hi Oliver,
sorry, habe etwas an Code vergessen.
1. Füge der Datei im VBE ein allgemeines Modul hinzu
2. Schreib in das Modul unterhalb von Option Explicit diesen Code:
Public pstrTxt

das wars schon.
Jetzt funktioniert es....zumindest bei mir. Bei dir auch?
Ciao
Thorsten
AW: ups, hab was vergessen
22.09.2018 11:23:57
Oliver
Guten Morgen Thorsten,
erst einmal vielen Dank für deine schnelle und tolle Hilfe, ich bin begeistert !
Der Code funktioniert einwandfrei, danke auch für die Erläuterungen wo der Code hingehört. Ich habe versucht ihn zu verstehen, befürchte aber dass ich soweit noch nicht bin.
Eine kleine Verbesserung wäre noch toll, jetzt kann der User zwar nur die richtigen Zeichen eingeben, aber wenn er weniger eingibt erlaubt das Programm das auch. Kann man bei zu wenig eingegebenen Zeichen eine MSGBOX erscheinen lassen?
Gruß
Oliver
Anzeige
AW: ups, hab was vergessen
22.09.2018 12:25:03
Oberschlumpf
Hi Oliver,
füge, auch ins Userform-Modul, diesen Code hinzu:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox1.Text)  10 Then
MsgBox "Angabe in TextBox1 unvollständig", vbExclamation, "Hinweis"
Cancel = True
End If
End Sub

Beachte den zu ändernden Namen für Textbox, wenn erforderlich.
Hilfts?
Ciao
Thorsten
AW: ups, hab was vergessen
22.09.2018 13:45:38
Oliver
Ich bin dir so dankbar, kannst dir nicht vorstellen.
Danke
Gruß

339 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige