Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nur 6 oder 9 Stellen in Textbox zulassen

Nur 6 oder 9 Stellen in Textbox zulassen
04.12.2005 11:26:46
Roland
Hallo Experten,
erst einmal ein großes Lob für dieses Forum. Ich habe mir schon einige Tipps holen können, aber jetzt habe ich ein Problem, das für Euch wahrscheinlich (…hoffentlich) keins ist.
Ich habe eine Userform mit 2 Textboxen und 2 Schaltflächen (OK trägt die Daten aus den Textboxen in eine Tabelle ein, bei Abbrechen passiert nichts). Funktioniert auch alles sehr gut. Aber jetzt: In der 1. Textbox dürfen (sollen) nur 6 oder 9 Stellen eingegeben werden (egal ob Zahlen, (Leer)Zeichen oder Buchstaben). Beim Verlassen der TB1 und einer Fehleingabe (z.B. 0-stellig, 5-stellig, 7-stellig oder 10-stellig etc.) soll eine Fehlermeldung kommen (z.B. Falscher Wert) und danach den Inhalt aus TB1 löschen für neuen Versuch. In Textbox 2 soll ein Wert eingegeben werden (egal wie viele Stellen, Zahlen, (Leer)Zeichen oder Buchstaben). Es muss halt was drinstehen. Auch dann soll eine Fehlermeldung kommen (z.B. Alle Felder müssen ausgefühlt werden).
Auch beim Klick auf OK soll nichts in die Tabelle eingetragen werden, wenn in Textbox 1 oder Textbox 2 nichts steht (Es kann ja sein, dass der Anwender nur eine Textbox fühlt).
Allerdings darf dann die Userform auch nicht verschwinden.
Der Code sieht aktuell so aus:

Private Sub CommandButton1_Click()
Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = TextBox1.Text
Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Value = TextBox2.Text
Unload Me
End Sub


Private Sub CommandButton2_Click()
Unload Me
End Sub


Private Sub TextBox1_Change()
End Sub


Private Sub TextBox2_Change()
End Sub

Bedenkt bitte, dass ich in VBA ein absoluter Anfänger bin.
Ich hoffe, ich finde einen fleißigen Helfer.
MfG
Roland
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur 6 oder 9 Stellen in Textbox zulassen
04.12.2005 11:34:52
Josef
Hallo Roland!
Vielleicht so!
Private Sub CommandButton1_Click()
Dim blnCheck As Boolean

blnCheck = Len(TextBox1) = 6 Or Len(TextBox1) = 9

If Not blnCheck Then
  MsgBox "Falsche Eingabe in Textbox1!", 48, "Hinweis"
  TextBox1.SetFocus
  Exit Sub
End If

blnCheck = Len(TextBox2) > 0

If Not blnCheck Then
  MsgBox "Falsche Eingabe in Textbox2!", 48, "Hinweis"
  TextBox2.SetFocus
  Exit Sub
End If

'..dein Code

End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Nur 6 oder 9 Stellen in Textbox zulassen
04.12.2005 12:16:53
Roland
Hallo Sepp,
genau so!!!
Vielen, vielen Dank. Damit hast Du mir echt geholfen
MfG
Roland
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Textbox-Beschränkungen in Excel VBA umsetzen


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass in einer Textbox nur 6 oder 9 Stellen eingegeben werden können, und um bei Fehleingaben entsprechende Meldungen auszugeben, kannst du folgenden VBA-Code verwenden:

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Füge eine Userform hinzu, falls noch nicht geschehen.
  3. Platziere zwei Textboxen (TextBox1 und TextBox2) und zwei Schaltflächen (CommandButton1 für OK und CommandButton2 für Abbrechen).
  4. Füge den folgenden Code in das Codefenster der Userform ein:
Private Sub CommandButton1_Click()
    Dim blnCheck As Boolean

    ' Überprüfung der Eingabe in TextBox1
    blnCheck = Len(TextBox1.Text) = 6 Or Len(TextBox1.Text) = 9
    If Not blnCheck Then
        MsgBox "Falsche Eingabe in Textbox1!", vbExclamation, "Hinweis"
        TextBox1.SetFocus
        Exit Sub
    End If

    ' Überprüfung der Eingabe in TextBox2
    blnCheck = Len(TextBox2.Text) > 0
    If Not blnCheck Then
        MsgBox "Falsche Eingabe in Textbox2!", vbExclamation, "Hinweis"
        TextBox2.SetFocus
        Exit Sub
    End If

    ' Daten in Tabelle eintragen (falls alles korrekt)
    Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = TextBox1.Text
    Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Value = TextBox2.Text
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Häufige Fehler und Lösungen

  • Fehlermeldung wird nicht angezeigt: Stelle sicher, dass die Überprüfungen in der CommandButton1_Click-Subroutine korrekt sind.
  • Userform schließt sich trotz Fehler: Überprüfe, ob der Unload Me-Befehl nur nach den Eingaben ausgeführt wird, wenn alle Bedingungen erfüllt sind.

Alternative Methoden

Anstatt VBA zu verwenden, kannst du auch die Datenvalidierung in Excel nutzen, um Eingaben zu beschränken. Diese Methode ist jedoch nicht so flexibel wie VBA und erlaubt keine Fehlermeldungen in der gleichen Weise.

  1. Wähle die Zellen aus, die du validieren möchtest.
  2. Gehe zu Daten -> Datenüberprüfung.
  3. Wähle Benutzerdefiniert und gebe eine Formel ein, die die Eingabe überprüft (z.B. =ODER(LÄNGE(A1)=6;LÄNGE(A1)=9)).

Praktische Beispiele

Hier ist ein Beispiel, wie die Userform aussehen könnte:

  • Textbox1: Eingabe von 6 oder 9 Zeichen.
  • Textbox2: Beliebige Eingabe, die jedoch nicht leer sein darf.

Wenn der Benutzer zum Beispiel "123456" in TextBox1 und "Test" in TextBox2 eingibt, wird die Eingabe akzeptiert. Bei "12345" oder leerer TextBox2 wird eine Fehlermeldung ausgegeben.


Tipps für Profis

  • Nutze InputBox für einfache Eingaben, wenn du keine Userform benötigst.
  • Implementiere Error Handling in deinen VBA-Codes, um unerwartete Fehler besser zu verwalten.
  • Vermeide das Entladen der Userform, wenn du sie für weitere Eingaben nutzen möchtest. Setze stattdessen den Fokus zurück auf die ersten Textboxen.

FAQ: Häufige Fragen

1. Wie kann ich die Eingabe in TextBox1 auf nur Zahlen beschränken? Du kannst die KeyPress-Ereignisse von TextBox1 verwenden, um nur Zahlen zuzulassen:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
        KeyAscii = 0 ' Verhindert die Eingabe von nicht-numerischen Zeichen
    End If
End Sub

2. Was kann ich tun, wenn ich möchte, dass die Userform nach einer erfolgreichen Eingabe automatisch schließt? Füge am Ende der CommandButton1_Click() Subroutine den Befehl Unload Me hinzu, nachdem du die Daten in die Tabelle eingetragen hast.

3. Wie kann ich sicherstellen, dass die Userform nur einmal geöffnet wird? Überprüfe vor dem Öffnen der Userform, ob sie bereits geladen ist, und nutze UserForm.Show nur, wenn sie nicht aktiv ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige