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

Forumthread: Textbox nur Zahlen und Komma zulassen

Textbox nur Zahlen und Komma zulassen
08.04.2021 23:28:20
Patrick
Hallo zusammen,
ich benötige mal wieder Hilfe.
Ich habe eine Userform mit Multiseiten (4 Pages), darin befinden sich auf jeder Page zwischen 12 und 22 Textboxen.
In allen Textboxen sollen nur Zahlen und ein Komma eingetragen werden können.
Aus einem anderen Forum habe ich bereits was gefunden, wie ich das Format in allen TextBoxen über eine Klasse anpassen kann (habe den Code auch soweit begriffen).
Nun stoße ich aber an meine Grenzen, damit nur Zahlen und ein Komma eingetragen werden kann.
Hier mal die Codes, die ich bisher verwendet habe:
In einer Klasse:

Option Explicit
Public WithEvents clTextBox As MSForms.TextBox
Private Sub clTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Or KeyCode = 9 Then If IsNumeric(clTextBox) Then clTextBox = Format(CDbl( _
clTextBox), "#,##0.00 €")
End Sub
in ein Modul:

Option Explicit
Public WithEvents clTextBox As MSForms.TextBox
Private Sub clTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Or KeyCode = 9 Then If IsNumeric(clTextBox) Then clTextBox = Format(CDbl( _
clTextBox), "#,##0.00 €")
End Sub
und in die Userform:

Option Explicit
Dim coElement As Control
Private Sub Userform_Initialize()
Dim inZaehler As Integer
For Each coElement In Me.Controls
If TypeName(coElement) = "TextBox" Then
ReDim Preserve clsTextBoxen(0 To inZaehler)
Set clsTextBoxen(inZaehler).clTextBox = coElement
inZaehler = inZaehler + 1
End If
Next coElement
End Sub
Ich hoffe mir kann jemand helfen.
Vielen Dank schonmal
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie in dem...
09.04.2021 12:31:54
Patrick
Hey,
ja genau so :) Danke.
Aber warum geht der Nummernblock nicht? Es gehen nur die Zahlen über den Buchstaben.
Muss ich NumLock noch irgendwie im VBA abfragen?
Also NumLock ist aus, die Tasten funktionieren soweit, halt eben in der UserForm nicht.
Anzeige
Also bei mir funktionieren...
09.04.2021 13:37:53
Case
Hallo, :-)
... die Zahlen über den Nummernblock. Sollte natürlich eingeschaltet sein. ;-)
Servus
Case
AW: Also bei mir funktionieren...
09.04.2021 13:53:47
Patrick
Bei mir auch wieder nach einem Neustart. Komischerweise hat es manchmal funktioniert und manchmal nicht.
Also dann Danke für die Hilfe mit dem Code ;)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Textbox in Excel VBA nur für Zahlen und Komma zulassen


Schritt-für-Schritt-Anleitung

Um in einer Excel Userform eine Textbox zu erstellen, die nur Zahlen und ein Komma zulässt, folge diesen Schritten:

  1. Öffne den VBA-Editor in Excel, indem du Alt + F11 drückst.

  2. Füge eine Userform hinzu: Rechtsklick im Projektfenster > Einfügen > Userform.

  3. Füge Textboxen hinzu: Ziehe das TextBox-Steuerelement auf die Userform.

  4. Erstelle eine Klasse für die Textboxen:

    • Füge ein neues Modul hinzu (Rechtsklick im Projektfenster > Einfügen > Klasse).
    • Benenne die Klasse zum Beispiel clsTextBox.
    • Füge den folgenden Code ein:
    Option Explicit
    Public WithEvents clTextBox As MSForms.TextBox
    
    Private Sub clTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Or KeyCode = 9 Then
            If IsNumeric(clTextBox) Then
                clTextBox = Format(CDbl(clTextBox), "#,##0.00 €")
            End If
        End If
    End Sub
  5. Initialisiere die Textboxen in der Userform:

    • Gehe zur Codeansicht der Userform und füge folgenden Code hinzu:
    Option Explicit
    Dim clsTextBoxen() As clsTextBox
    Dim inZaehler As Integer
    
    Private Sub Userform_Initialize()
        For Each coElement In Me.Controls
            If TypeName(coElement) = "TextBox" Then
                ReDim Preserve clsTextBoxen(0 To inZaehler)
                Set clsTextBoxen(inZaehler).clTextBox = coElement
                inZaehler = inZaehler + 1
            End If
        Next coElement
    End Sub
  6. Teste die Userform: Drücke F5, um die Userform zu starten, und teste, ob die Textboxen nur Zahlen und ein Komma akzeptieren.


Häufige Fehler und Lösungen

  • Nummernblock funktioniert nicht: Überprüfe, ob der NumLock aktiviert ist. Wenn die Tasten über den Buchstaben funktionieren, könnte es an der Konfiguration der Userform liegen.
  • Excel akzeptiert keine Eingaben: Stelle sicher, dass die Textboxen korrekt mit der Klasse verbunden sind und keine anderen Steuerelemente den Fokus blockieren.

Alternative Methoden

Eine andere Möglichkeit, um sicherzustellen, dass nur Zahlen und Kommas eingegeben werden, ist die Verwendung des BeforeUpdate-Ereignisses. Hierbei wird die Eingabe vor der Bestätigung überprüft:

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsNumeric(TextBox1.Value) And InStr(TextBox1.Value, ",") = 0 Then
        MsgBox "Bitte nur Zahlen und Komma eingeben!"
        Cancel = True
    End If
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du in einer Userform mehrere Textboxen nur für Zahlen und Komma zulassen kannst:

  1. Erstelle eine Userform mit drei Textboxen.
  2. Nutze den oben genannten Code in der Klasse clsTextBox.
  3. Füge den Initialisierungscode für alle Textboxen in die Userform ein.

Dies ermöglicht dir, eine einheitliche Eingabe für mehrere Felder zu gewährleisten.


Tipps für Profis

  • Erweiterte Validierung: Du kannst die Eingabe weiter filtern, z.B. negative Zahlen oder bestimmte Formate.
  • Benutzerfreundlichkeit: Zeige eine Fehlermeldung an, wenn die Eingabe ungültig ist, um die Benutzerfreundlichkeit zu erhöhen.
  • Design: Achte darauf, dass die Userform ansprechend gestaltet ist, um eine bessere Benutzererfahrung zu bieten.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur Zahlen und ein Komma eingegeben werden?
Du kannst das KeyDown-Ereignis oder das BeforeUpdate-Ereignis der Textbox verwenden, um die Eingaben zu validieren.

2. Funktioniert das in allen Excel-Versionen?
Ja, die beschriebenen Methoden funktionieren in den meisten Versionen von Excel, die VBA unterstützen. Achte darauf, dass du eine Version verwendest, die Userforms und VBA unterstützt.

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