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

Forumthread: textbox dezimalzahlen

textbox dezimalzahlen
kirsche
hallo leute,
ich möchte in textboxen nur dezimalzahlen zulassen.
dafür benutze ich folgenden code:
Private Sub Textbox21_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii: Case 48 To 57: Case 44: Case Else: KeyAscii = 0: End Select
End Sub
nun passiert folgendes phänomen:
gebe ich in die textbox eine zahl mit 2 nachkommastellen ein, dann ist alles ok.
gebe ich 3 nachkommastellen ein, wird die zahl nicht mit nem komma in die tabelle geschrieben, sondern mit nem punkt.
aus 18,356 wird 18.356
beim wieder aufrufen in die textbox kommt dann das raus: 18356
wie kann ich den fehler beheben?
gruss dörte
Anzeige

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

Betreff
Benutzer
Anzeige
AW: textbox dezimalzahlen
03.12.2009 10:15:56
hary
Hi
Teste mal. Zahl als Double.

Cells(1, 1) = CDbl(TextBox21)

gruss hary
AW: textbox dezimalzahlen
03.12.2009 10:23:32
kirsche
hallo harry,
danke für den tip, so habe ich mir auch geholfen.
aber merkwürdig ist das schon, dass das mit 2 kommastellen klappt und mit 3 kommastellen nicht.
gruss dörte
Anzeige
AW: textbox dezimalzahlen
03.12.2009 11:15:03
Tino
Hallo,
ich mache dies immer mit dieser Funktion.
'Funktion zum prüfen einer Textbox ---> Nur Zahlen zulassen 
Private 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
              OnlyNumbers = IIf("0.5" * 2 = 1, 46, 44)
            Else
              OnlyNumbers = 0
            End If
     Else
            Select Case intKeyNumber
             Case 48 To 57: OnlyNumbers = intKeyNumber
             Case Else: OnlyNumbers = 0
            End Select
     End If

End Function

Private Sub TextBox21_KeyPress(ByVal intKeyAsc As MSForms.ReturnInteger)
 intKeyAsc = OnlyNumbers(TextBox21, CInt(intKeyAsc))
End Sub
Gruß Tino
Anzeige
AW: textbox dezimalzahlen
03.12.2009 14:39:19
kirsche
hallo tino,
danke für den code, werde ich ausprobieren, leider komme ich heute nicht mehr dazu.
rückmeldung kommt nach test.
gruss dörte
;
Anzeige
Anzeige

Infobox / Tutorial

Dezimalzahlen in Textboxen richtig verarbeiten


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass in einer Textbox nur Dezimalzahlen eingegeben werden, kannst du den folgenden VBA-Code verwenden:

  1. Öffne das Excel-Arbeitsblatt, in dem du die Textbox hast.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge den folgenden Code in das Modul der UserForm ein, wo sich die Textbox befindet:
Private Sub TextBox21_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 48 To 57 ' Zahlen von 0 bis 9
        Case 44 ' Komma
        Case Else
            KeyAscii = 0 ' Alle anderen Eingaben ignorieren
    End Select
End Sub
  1. Überprüfe, ob die Eingabe korrekt funktioniert, insbesondere bei Dezimalzahlen mit zwei oder mehr Nachkommastellen.

Häufige Fehler und Lösungen

  • Problem: Bei der Eingabe von drei Nachkommastellen wird die Zahl mit einem Punkt statt mit einem Komma in die Tabelle geschrieben.
    • Lösung: Verwende den Typ Double, um die Zahl korrekt zu speichern. Hier ist der angepasste Code:
Cells(1, 1) = CDbl(TextBox21)
  • Problem: Zahlen werden beim erneuten Aufruf der Textbox falsch dargestellt.
    • Lösung: Stelle sicher, dass die Formatierung der Textbox korrekt ist und die Umwandlung in einen Double-Wert erfolgt, bevor du die Werte speicherst.

Alternative Methoden

Eine alternative Methode zur Validierung von Zahlen in einer Textbox könnte die Verwendung einer Funktion sein, die speziell für die Eingabekontrolle entwickelt wurde. Hier ein Beispiel:

Private 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
            OnlyNumbers = IIf("0.5" * 2 = 1, 46, 44)
        Else
            OnlyNumbers = 0
        End If
    Else
        Select Case intKeyNumber
            Case 48 To 57: OnlyNumbers = intKeyNumber
            Case Else: OnlyNumbers = 0
        End Select
    End If
End Function

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du die Validierung der Dezimalzahlen in einer UserForm umsetzen kannst:

  1. Füge eine UserForm mit einer Textbox und einem Button hinzu.
  2. Verwende den oben genannten Code, um die Eingabe in der Textbox zu validieren.
  3. Schreibe den Wert der Textbox in eine Zelle, wenn der Button geklickt wird.

Tipps für Profis

  • Kommastellen prüfen: Achte darauf, dass die Benutzeroberfläche klar kommuniziert, welche Eingabeformate zulässig sind. Eine einfache Anleitung in der UserForm kann helfen.
  • Zahlen runden: Wenn du Dezimalzahlen runden möchtest, kannst du die Funktion Round() verwenden:
Cells(1, 1) = Round(CDbl(TextBox21), 2) ' Rundet auf 2 Dezimalstellen

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Eingabe immer ein Dezimalformat hat?
Verwende die oben genannten Validierungsfunktionen im VBA-Code, um sicherzustellen, dass nur gültige Zahlen eingegeben werden.

2. Was kann ich tun, wenn Benutzer auch negative Zahlen eingeben sollen?
Erweitere die Select Case-Anweisung, um das Minuszeichen (45) zu akzeptieren.

3. Wie kann ich die Anzahl der erlaubten Nachkommastellen begrenzen?
Du kannst die Eingabe in der Textbox so anpassen, dass nur eine bestimmte Anzahl von Kommas oder Punkten akzeptiert wird, indem du die Eingabe im KeyPress-Ereignis überprüfst.

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