Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
Anzeige
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
Anzeige
AW: ups, hab was vergessen
22.09.2018 13:45:38
Oliver
Ich bin dir so dankbar, kannst dir nicht vorstellen.
Danke
Gruß
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA Userform Textbox in bestimmtes Format


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic-Editor (VBE):

    • Drücke ALT + F11, um den VBE zu öffnen.
  2. Füge eine Userform hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (deine Arbeitsmappe)“ und wähle „Einfügen“ > „UserForm“.
  3. Füge eine TextBox zur Userform hinzu:

    • Ziehe die TextBox aus der Toolbox auf die Userform. Nenne sie TextBox1.
  4. Füge den Code zur TextBox hinzu:

    • Klicke doppelt auf die Userform und füge den folgenden Code in das Modul ein:
      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 _
                     .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
  5. Füge den Aktivierungs-Code hinzu:

    • Füge diesen Code ebenfalls in das Modul der Userform ein:
      Private Sub UserForm_Activate()
      pstrTxt = TextBox1.Text
      End Sub
  6. Erstelle ein allgemeines Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (deine Arbeitsmappe)“ und wähle „Einfügen“ > „Modul“.
    • Schreibe den folgenden Code unterhalb von Option Explicit:
      Public pstrTxt
  7. Füge den Code zur Fehlermeldung hinzu:

    • Um eine Meldung bei unvollständiger Eingabe zu zeigen, füge diesen Code ins Userform-Modul ein:
      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

Häufige Fehler und Lösungen

  • Problem: Die Punkte werden nicht automatisch eingefügt.

    • Lösung: Stelle sicher, dass der Code korrekt in das Change-Event der TextBox eingefügt wurde.
  • Problem: Der Code wird nicht ausgeführt.

    • Lösung: Überprüfe, ob die TextBox den richtigen Namen hat (TextBox1) und dass das Userform aktiv ist.
  • Problem: Fehlermeldungen erscheinen.

    • Lösung: Achte darauf, dass die Variablen korrekt deklariert sind und dass pboUndo und pstrTxt richtig definiert sind.

Alternative Methoden

  • Statt VBA könntest du auch Datenvalidierung in Excel verwenden, um Eingaben zu überprüfen. Dies ist jedoch weniger flexibel als die VBA-Lösung.

  • Eine weitere Möglichkeit könnte die Verwendung von Formeln sein, um das Format zu überprüfen. Diese Methode erfordert jedoch mehr manuelle Eingriffe.


Praktische Beispiele

  • Beispiel 1: Wenn der Benutzer C99.123.67 eingibt, wird das Format sofort überprüft, und die Punkte werden automatisch hinzugefügt.

  • Beispiel 2: Wenn der Benutzer weniger als 10 Zeichen eingibt, erscheint eine Meldung, die darauf hinweist, dass die Eingabe unvollständig ist.


Tipps für Profis

  • Nutze Fehlerbehandlung in deinem VBA-Code, um unerwartete Eingaben besser abzufangen.

  • Kommentiere deinen Code ausgiebig, um ihn für andere (oder für dich selbst in der Zukunft) verständlicher zu machen.

  • Experimentiere mit verschiedenen Textbox-Formaten, um die Benutzerfreundlichkeit deiner Userform zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich das Format einer TextBox ändern?
Du kannst das Format einer TextBox in VBA durch spezifische Validierungscodes anpassen, wie im Tutorial beschrieben.

2. Welche Excel-Version benötige ich für diese Anleitung?
Diese Anleitung ist für Excel ab Version 2007 geeignet, da VBA in allen modernen Excel-Versionen verfügbar ist.

3. Was ist, wenn ich mehr als zwei Zahlen nach dem ersten Punkt haben möchte?
Du müsstest den Code entsprechend anpassen, um die Längenüberprüfung zu ändern und mehr Bedingungen hinzuzufügen.

4. Kann ich eine andere Art von Benutzeroberfläche verwenden?
Ja, du kannst auch Forms oder ActiveX-Steuerelemente verwenden, um die Benutzeroberfläche zu gestalten, aber die grundlegenden Prinzipien bleiben gleich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige