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

Forumthread: Zahlenformatierung in TextBox

Zahlenformatierung in TextBox
18.06.2014 13:39:32
Han2883
Hallo,
ich habe die deutsche Version von Excel deswegen ist das problemlos für die Erkennung des "Komma"s wenn ich "1,23 kg" in eine Excel-Tabelle eintrage.
Aber bei der Eingabe in TextBox in Userform wird die Eingabe von "1,23 kg" als "123 kg" erkannt. Ein anderes Beispiel ist dass die Eingabe von "1.057 kg" in TextBox als "1,057 kg" erkannt wird.
Könnte mir jemand dabei helfen? Danke im voraus! :-)
Gruß
Han2883

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenformatierung in TextBox
18.06.2014 13:42:35
Hajo_Zi
nur wenige sehen Deinen Code und sehen wie Du das erkennst.

AW: Zahlenformatierung in TextBox
18.06.2014 13:50:19
Han2883
Wie meinst du genau Hajo_Zi?
Gruß
Han2883

AW: Zahlenformatierung in TextBox
18.06.2014 13:53:28
Hajo_Zi
du hast geschrieben das er das falsch erkennt, ich bin davon ausgegangen das es Code ist der das falsch erkennt.
Ansonsten muss Du es genauer beschreiben.

Anzeige
AW: Zahlenformatierung in TextBox
18.06.2014 14:18:09
Han2883
Hallo Hajo_Zi,
Hier habe ich zwei Screenshots gemacht:
Userbild
Userbild
und noch das Code dazu:
Private Sub CommandButton1_Click()
Sheets("Tabelle1").Cells(2, 2).Value = Me.TextBox1.Value
Unload Me
End Sub
Ich hoffe es wird jetzt klarer. :-)
Gruß
Han

Anzeige
AW: Zahlenformatierung in TextBox
18.06.2014 14:21:07
Hajo_Zi
du schreibst Text in die Zelle da eine TextBox Text enthält. Benutze Umwandlungsfunktionen z.B. CDBL()
Gruß Hajo

AW: Zahlenformatierung in TextBox
18.06.2014 14:46:40
Han2883
Hallo Hajo,
Danke Dir sehr! es funktioniert jetzt nachdem ich folgendes geändert habe:
Sheets("Tabelle1").Cells(2, 2).Value = CDbl(Me.TextBox1.Value)
statt:
Sheets("Tabelle1").Cells(2, 2).Value = Me.TextBox1.Value
wieder was Neues gelernt. Danke nochmal! :-)
Gruß
Han

Anzeige
AW: Zahlenformatierung in TextBox
18.06.2014 15:52:03
Daniel
und damit du noch was lernst:
Wenn du einen Text in eine Zelle schreibst, dann prüft Excel, ob dieser Text eine Zahl sein könnte und wenn ja, wandelt Excel diesen Text in ein Zahl um.
In einem Deutschen Excel verwendet Excel auch das Deutsche Zahlenformat mit dem Komma als Dezimal und dem Punkt als Tausenderzeichen, wenn du den Text von Hand in die Zelle eingibst.
VBA und Excel reden jedoch Englisch miteinander, dh wenn der Text von einem VBA-Makro kommt, dann wendet Excel bei der Prüfung ob es sich um eine Zahl handelt, das Englische Zahlenformat mit dem Punkt als Dezimal- und dem Komma als Tausendertrennzeichen an.
dh wenn du im Text das Komma durch den Punkt austauscht, entspricht der Text dem englischen Zahlenformat und wird dann von Excel als Zahl erkannt:
Sheets("Tabelle1").Cells(2, 2).Value = Replace((Me.TextBox1.Value, ",", ".")
die CDBL-Funktion verwendet bei der Umwandlung von Text in Zahl automatisch die Landestypischen Dezimal- und Tausenderzeichen und du übergibst dann keinen Text der von Excel gewandelt werden muss, sondern gleich die fertige Zahl.
Der Nachteil der CDBL-Funktion ist, dass sie einen Fehlerabbruch erzeugt, wenn die Textbox leer ist oder einen Text enthält, der nicht in eine Zahl wandelbar ist.
Um solche Fehlerabbrüche zu vermeiden, solltest du also eine entsprechende Prüfung einbauen, wenn du mit CDBL arbeitest:
IF IsNumeric(me.Textbox1.text) then Sheets("Tabelle1").Cells(2, 2).Value = CDbl(Me.TextBox1.Value)
Gruß Daniel

Anzeige
AW: Zahlenformatierung in TextBox
18.06.2014 16:37:25
Han2883
Hallo Daniel,
Danke für deine Hilfe. das hat mir sehr geholfen. :-)
Gruß
Han2883
;
Anzeige
Anzeige

Infobox / Tutorial

Zahlenformatierung in TextBox


Schritt-für-Schritt-Anleitung

  1. Userform erstellen: Öffne Excel und erstelle eine Userform mit einer TextBox und einem CommandButton.

  2. Code hinzufügen: Füge den folgenden Code in das Codefenster der Userform ein:

    Private Sub CommandButton1_Click()
       If IsNumeric(Me.TextBox1.Value) Then
           Sheets("Tabelle1").Cells(2, 2).Value = CDbl(Me.TextBox1.Value)
       Else
           MsgBox "Bitte geben Sie eine gültige Zahl ein."
       End If
       Unload Me
    End Sub
  3. Zahlenformat anpassen: Beachte, dass Excel in der deutschen Version das Komma als Dezimaltrennzeichen verwendet. Wenn Du mit VBA arbeitest, verwendet Excel das englische Zahlenformat. Das bedeutet, dass Du bei der Eingabe von Zahlen mit Tausendertrennzeichen den Punkt verwenden solltest.


Häufige Fehler und Lösungen

  • Problem: Die Eingabe von "1,23 kg" wird als "123 kg" erkannt.

    • Lösung: Stelle sicher, dass Du die CDBL-Funktion verwendest, um die Eingabe korrekt zu konvertieren: Sheets("Tabelle1").Cells(2, 2).Value = CDbl(Me.TextBox1.Value).
  • Problem: Fehler bei der Umwandlung, wenn die TextBox leer ist.

    • Lösung: Füge eine Prüfung mit IsNumeric hinzu, um sicherzustellen, dass der Wert in der TextBox eine gültige Zahl ist.

Alternative Methoden

Falls Du die Eingabewerte manuell formatieren möchtest, kannst Du auch die Replace-Funktion verwenden, um die Eingabe vor der Konvertierung anzupassen:

Sheets("Tabelle1").Cells(2, 2).Value = Replace(Me.TextBox1.Value, ",", ".")

Diese Methode hilft, das Zahlenformat für englische Konvertierungen anzupassen.


Praktische Beispiele

  • Beispiel 1: Wenn Du "1.057 kg" eingibst, wird dies durch die Replace-Funktion in "1,057 kg" umgewandelt, was Excel als gültige Zahl erkennt.
  • Beispiel 2: Die Eingabe von "2,5" wird in der deutschen Excel-Version korrekt als Dezimalzahl interpretiert, wenn Du die CDBL-Funktion anwendest.

Tipps für Profis

  • Optimierung: Verwende die CDBL-Funktion, um sicherzustellen, dass die Umwandlung von Text in Zahlen reibungslos verläuft. Dies reduziert Fehler und verbessert die Datenintegrität.
  • Zahlenformatierungen: Achte darauf, das richtige Zahlenformat zu verwenden, insbesondere wenn Du mit internationalen Formaten arbeitest. Das englische Format verwendet den Punkt als Dezimaltrennzeichen und das Komma als Tausendertrennzeichen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Eingabe korrekt als Zahl erkannt wird?
Verwende die IsNumeric-Funktion, um zu prüfen, ob die Eingabe in der TextBox eine gültige Zahl ist, bevor Du sie weiterverarbeitest.

2. Was passiert, wenn die TextBox leer ist?
Wenn die TextBox leer ist und Du die CDBL-Funktion ohne Prüfung verwendest, kommt es zu einem Fehler. Implementiere eine Prüfung, um solche Situationen zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige