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

Forumthread: Nur Zahlen zulassen

Nur Zahlen zulassen
Frank
Hallo an Alle,
ich weiß das Thema wurde schon oft besprochen (in einer Textbox bzw. vielen Textboxen nur Zahlen zulassen) und ich habe auch einen entsprechenden Beitrag gefunden, den ich versucht habe umzusetzen. Aber iregndwie will es noch nicht ganz klappen. Kann mal bitte jemand schauen, was ich in meinem UserFormCode falsch mache?
Das steht in der UserForm1:
Option Explicit
Dim objTbx(1 To 5) As New Klasse1

Private Sub UserForm_Activate()
'Textboxen initialisieren
Set objTbx(1).myTxtBox = TextBox1
Set objTbx(2).myTxtBox = TextBox2
Set objTbx(3).myTxtBox = TextBox3
Set objTbx(4).myTxtBox = TextBox4
Set objTbx(5).myTxtBox = TextBox5
End Sub
Und das in der Klasse1:
Option Explicit
Public WithEvents myTxtBox As MSForms.TextBox

Private Sub myTxtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57, 44, 46
Case Else: KeyAscii = 0
End Select
End Sub
In diesem Zusammenhang habe ich noch eine Frage bzw. dessen Umsetzbarkeit. Kann ich nur ein Komma bzw. einen Punkt pro TextBox zulassen?
Ich hoffe es kann mir jemand helden.
Vielen Dank und viele Grüße,
Frank
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Nur Zahlen zulassen
13.10.2011 16:46:21
Daniel
Hi
im Prinzip so:

Case Asc("."): if Instr(myTxtBox.Text, ".") > 0 Then KeyAscii = 0

Gruß, Daniel
AW: Nur Zahlen zulassen
14.10.2011 08:50:04
Frank
Hallo Daniel und vielen Dank für deine Antwort, das hilft schon mal weiter.
Jedoch besteht das Hauptproblem ja noch immer, dass irgendwas im Code falsch ist. Könnte sich bitte jemand die Datei anschauen. Ich habe sie in den Anhang gelegt.
https://www.herber.de/bbs/user/77002.xls
Viele Grüße
Frank
Anzeige
AW: Nur Zahlen zulassen
14.10.2011 10:26:06
Frank
Hallo Tino,

toll das funktioniert ja super, auch das man nur ein Komma eingeben kann TOLL :o) :o). Vielen Dank dafür. Ich verstehe das irgendwie nur zum Teil, da ich Anfänger bin und nie zuvor mit einer Klasse gearbeitet habe. Könntest du das Zusammenwirken bitte etwas erklären?
Was bedeutet bswp.:
IIf("0.5" * 2 = 5, ".", ",") --> also wie "0,5" * 2
?
Ich habe zunächst nur versucht, keine Buchstaben zu zulassen - was ist in meiner Datei falsch? Ich möchte das StepByStep verstehen....
Vielen Dank nochmal an Dich, ich muss immer wieder sagen "Tolles Forum" :o).
Viele Grüße,
Frank
Anzeige
AW: Nur Zahlen zulassen
14.10.2011 10:52:14
Tino
Hallo,
IIf("0.5" * 2 = 1, ".", ",") ----- nicht "0.5" * 2 = 5 sondern "0.5" * 2 = 1
Zu IIf kannst Du auch in der Hilfe unter IIf-Funktion nachsehen.
Hier ermittle ich welches Dezimaltrennzeichen im System eingestellt ist.
Ist das Komma eingestellt, ergibt "0.5" * 2 = 10
Ist der Punkt eingestellt, ergibt "0.5" * 2 = 1
Ist nun z.Bsp. das Komma eingestellt und Du drückst in der Textbox den Punkt
wird automtisch daraus ein Komma.
Dadurch ist gewärleistet, das man mit der Textbox normal rechnen kann.
Gruß Tino
Anzeige
AW: Nur Zahlen zulassen
14.10.2011 11:37:16
Tino
Hallo,
man könnte dies nun noch weiter ausbauen.
z.Bsp. wenn noch nichts in der Textbox steht und Du gibst ein Komma ein
wird die 0 automatisch vorangestellt.

Function OnlyNumbers(objTextBox As MSForms.TextBox, intKeyNumber As Integer) As Integer
Dim PunktOderKomma As String
    
PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
If intKeyNumber = 44 Or intKeyNumber = 46 Then
    If InStr(objTextBox, PunktOderKomma) = 0 And Len(objTextBox) > 0 Then
      If objTextBox.SelLength = Len(objTextBox) Then objTextBox = ""
      OnlyNumbers = Asc(PunktOderKomma)
    ElseIf Len(objTextBox) = 0 Then
      objTextBox.Value = "0"
      OnlyNumbers = Asc(PunktOderKomma)
    End If
Else
    Select Case intKeyNumber
     Case 48 To 57
        If objTextBox.SelLength = Len(objTextBox) Then objTextBox = ""
        OnlyNumbers = intKeyNumber
     Case Else: OnlyNumbers = 0
    End Select
End If

End Function
Gruß Tino
Anzeige
DANKE DANKE DANKE DANKE Tino :o)
14.10.2011 11:55:13
Frank
...und ein schönes Wochenende.
Viele Grüße,
Frank
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Nur Zahlen in Excel-Textboxen zulassen


Schritt-für-Schritt-Anleitung

Um in einer Excel-Textbox nur Zahlen zuzulassen, kannst Du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, um das zu erreichen:

  1. Öffne Deine Excel-Datei und gehe zu Entwicklertools > Visual Basic.

  2. Erstelle ein neues UserForm und füge fünf TextBoxen hinzu (TextBox1, TextBox2, TextBox3, TextBox4, TextBox5).

  3. Füge einen neuen Modul hinzu und erstelle eine Klasse namens Klasse1.

  4. Verwende den folgenden Code in Deiner UserForm:

    Option Explicit
    Dim objTbx(1 To 5) As New Klasse1
    
    Private Sub UserForm_Activate()
        ' Textboxen initialisieren
        Set objTbx(1).myTxtBox = TextBox1
        Set objTbx(2).myTxtBox = TextBox2
        Set objTbx(3).myTxtBox = TextBox3
        Set objTbx(4).myTxtBox = TextBox4
        Set objTbx(5).myTxtBox = TextBox5
    End Sub
  5. In der Klasse1 fügst Du den folgenden Code ein:

    Option Explicit
    Public WithEvents myTxtBox As MSForms.TextBox
    
    Private Sub myTxtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        Select Case KeyAscii
        Case 48 To 57, 44, 46 ' Erlaubte Zeichen: 0-9, Komma und Punkt
        Case Else: KeyAscii = 0 ' Verhindert die Eingabe anderer Zeichen
        End Select
    End Sub
  6. Um sicherzustellen, dass nur ein Komma oder Punkt pro TextBox eingegeben werden kann, kannst Du diesen Code hinzufügen:

    Case Asc("."): If InStr(myTxtBox.Text, ".") > 0 Then KeyAscii = 0

Jetzt hast Du eine funktionierende Lösung, die sicherstellt, dass in den TextBoxen nur Zahlen eingegeben werden können.


Häufige Fehler und Lösungen

  • Problem: TextBox akzeptiert Buchstaben.

    • Lösung: Überprüfe den Code in der myTxtBox_KeyPress-Methode und stelle sicher, dass nur die ASCII-Werte für Zahlen (48-57) und die Zeichen für Komma (44) und Punkt (46) akzeptiert werden.
  • Problem: Das Komma wird nicht korrekt verarbeitet.

    • Lösung: Stelle sicher, dass Du die IIf-Funktion zur Bestimmung des Dezimaltrennzeichens verwendest, wie in den vorherigen Beispielen erklärt.

Alternative Methoden

Falls Du eine einfachere Methode suchst, um sicherzustellen, dass nur Zahlen eingegeben werden können, kannst Du auch die Data Validation-Funktion in Excel nutzen:

  1. Wähle die Zelle oder den Bereich aus, den Du validieren möchtest.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle "Zahl" und konfiguriere die Bedingungen, um nur positive Werte oder siebenstellige Zahlen zuzulassen.

Praktische Beispiele

  1. Nur positive Werte zulassen:

    If Val(myTxtBox.Text) < 0 Then
       MsgBox "Bitte nur positive Werte eingeben."
       KeyAscii = 0
    End If
  2. Nur siebenstellige Zahlen zulassen:

    If Len(myTxtBox.Text) <> 7 Then
       MsgBox "Bitte nur siebenstellige Zahlen eingeben."
       KeyAscii = 0
    End If

Tipps für Profis

  • Verwende das InputBox-Dialogfeld für eine bessere Benutzerführung, wenn Du Zahlen abfragen möchtest.
  • Implementiere eine Funktion, die sicherstellt, dass der Benutzer keine leeren Werte eingibt, bevor er die Eingabe bestätigt.
  • Nutze die Möglichkeit, Fehler im Code zu debuggen, indem Du Haltepunkte setzt und den Code Schritt für Schritt ausführst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur Zahlen eingegeben werden? Verwende die KeyPress-Ereignisprozedur in VBA, um die Eingabe zu überprüfen und nur die gewünschten Zeichen zuzulassen.

2. Ist es möglich, auch Dezimalzahlen zuzulassen? Ja, indem Du die ASCII-Werte für Komma und Punkt in Deiner KeyPress-Logik berücksichtigst.

3. Wie kann ich die Eingabe auf eine bestimmte Anzahl von Ziffern beschränken? Du kannst die Länge der Eingabe in der KeyPress-Ereignisprozedur überprüfen und gegebenenfalls die Eingabe verhindern.

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