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

Forumthread: Formatierung der Textbox und Label in Userform

Formatierung der Textbox und Label in Userform
20.02.2007 10:06:08
Sophie
Hallo lieber Forum,
stoße an die Grenzen meiner VBA-Kenntnisse.
Ich habe eine Userform, in der 3 Positionen (Zahlen über 1.000) eingegeben werden und in einem Label drunter die Summe dieser drei Positionen dargestellt wird.
Ich würde gerne die Eingaben in den Textboxen und die Darstellung des Labels folgendermaßen formatieren:
wie in Excel - Punkt als Tausender Trennzeichen und 2 Nachkommastellen zulassen (sowohl in den Textboxen als auch im Label).
Weiß jemand, was für ein Befehl man dabei benutzt und wie man das schreibt?
Ich bin euch sehr dankbar.
Liebe Grüße
Sophie
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Formatierung der Textbox und Label in Userform
20.02.2007 10:11:00
IngGi
Hallo Sophie,
Userform1.Textbox1 = Format(Range("A1"), "#.##0,00")
fügt den Wert der Zelle A1 als formatierten Text in die Textbox ein. Eine Zahlenformatierung im eigentlichen Sinn ist in einer Textbox nicht möglich. Textboxen enthalten - wie der Name schon sagt - Text, keine Zahlen.
Gruß Ingolf
Anzeige
AW: Formatierung der Textbox und Label in Userform
20.02.2007 10:13:00
Erich
Hallo Sophie,
im Prinzip etwa so:
TextBox1 = Format(TextBox1, "#,###.00")
oder ausführlicher
TextBox1 = Format(CDbl(TextBox1), "#,###.00")
Label1 = Format(CDbl(TextBox1)+CDbl(TextBox2), "#,###.00")
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Formatierung der Textbox und Label in Userform
20.02.2007 11:41:00
Sophie
Hallo Erich!
Vielen Dank für deine Nachricht!
Den vorgeschlagenen Befehl habe ich schon vorher ausprobiert, nur komme ich mit dem nicht ganz klar...
Wenn ich mehr als zwei Nachkommastellen eingebe, switscht die Eingabe im Text plötzlich auf Tausende (Komma für die Nachkommastelle wechselt zu Punkt als Tausender Trennzeichen). Irgendwie ist das sehr kryptisch. Zur Sicherheit schicke ich dir meinen Code...

Private Sub TextBox40_Change()
With Worksheets("Eingabe Zertifikaten")
If TextBox40.Value = "" Then .Range("b1").Value = 0 Else .Range("b1").Value = Round(TextBox40.Value, 2)
'Hier würde ich gerne Zeile einfügen, die den Format meiner Textbox bestimmt...
Label47.Caption = .Range("b4").Value
Label47 = Format(CDbl(Label47), "#,###.00")
End With
End Sub

Herzlichen Dank,
Sophie
Anzeige
AW: Formatierung der Textbox und Label in Userform
20.02.2007 12:09:00
Erich
Hallo Sophie,
bei mir gibts auch mit mehr Nachkommastellen kein Problem.
Probier mal
Private Sub TextBox40_Change()
With Worksheets("Eingabe Zertifikaten")
If TextBox40 = "" Then
.Range("b1") = 0
Else
.Range("b1") = Round(CDbl(TextBox40), 2)
TextBox40 = Format(CDbl(TextBox40), "#,###.0000")
End If
TextBox40 = Format(CDbl(TextBox40), "#,###.0000")
Label47 = Format(.Range("b4"), "#,###.000")
End With
End Sub
Private Sub TextBox40_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Worksheets("Eingabe Zertifikaten")
If TextBox40 = "" Then
.Range("b1") = 0
Else
.Range("b1") = Round(CDbl(TextBox40), 2)
TextBox40 = Format(CDbl(TextBox40), "#,###.0000")
End If
Label47 = Format(.Range("b4"), "#,###.000")
End With
End Sub
Das Change-Ereignis würde ich hier nicht auswerten - die Formatiererei der Textbox stört bei der Eingabe sehr.
Besser wäre da wohl das Exit-Ereignis.
Value und Caption habe ich als Default-Eigenschaften weggelassen, sollte man aber vielleicht hinschreiben...
Ist eigentlich sicher, dass b4 eine Zahl enthält?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Formatierung der Textbox und Label in Userform
20.02.2007 14:41:00
Sophie
es funktioniert!!! nur geringfühgig angepasst sieht Code jetzt so aus:

Private Sub TextBox40_Change()
With Worksheets("Eingabe Zertifikaten")
If TextBox40 = "" Then
.Range("b1") = 0
Else
.Range("b1") = Round(CDbl(TextBox40), 2)
End If
Label47 = Format(.Range("b4"), "#,##.00")
End With
End Sub


Private Sub TextBox40_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Worksheets("Eingabe Zertifikaten")
If TextBox40 = "" Then
.Range("b1") = 0
Else
.Range("b1") = Round(CDbl(TextBox40), 2)
TextBox40 = Format(CDbl(TextBox40), "#,##.00")
End If
Label47 = Format(.Range("b4"), "#,##.00")
End With
End Sub

Und wenn ich bei UserForm_Initialize die Zeilen mit Formatierung reinschreibe, dann erscheinen die Zahlen von Anfang an im richtigen Format!
VIELEN HERZLICHEN DANK ! ! !
Sophie ;-)
Anzeige
Danke für Rückmeldung - Gerne! (oT)
20.02.2007 16:05:25
Erich
AW: Formatierung der Textbox und Label in Userform
20.02.2007 12:14:00
IngGi
Hallo Sophie,

Private Sub TextBox40_AfterUpdate()
   With Worksheets("Eingabe Zertifikaten")
      If TextBox40.Value = "" Then
         .Range("b1").Value = 0
      Else
         .Range("b1").Value = Round(TextBox40.Value, 2)
      End If
      TextBox40 = Format(TextBox40, "#.##0,00")
      Label47.Caption = .Range("b4").Value
      Label47 = Format(CDbl(Label47), "#,###.00")
   End With
End Sub

An Stelle des Change-Ereignisses habe ich das AfterUpdate-Ereignis genommen. Das Change-Ereignis würde bei der Eingabe jeder Ziffer anspringen, was unnötig ist. Das AfterUpdate-Ereignis dagegen springt erst an, wenn du die Textbox nach der Eingabe des kompletten Wertes wieder verlässt.
Gruß Ingolf
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Formatierung der Textbox und Label in Userform


Schritt-für-Schritt-Anleitung

Um die Formatierung der Textbox und des Labels in einer Userform mithilfe von VBA zu realisieren, befolge diese Schritte:

  1. Öffne den VBA-Editor in Excel (ALT + F11).
  2. Erstelle eine Userform und füge die benötigten Textboxen und Labels hinzu.
  3. Füge den folgenden Code in das Codefenster der Userform ein:
Private Sub TextBox40_Change()
    With Worksheets("Eingabe Zertifikaten")
        If TextBox40.Value = "" Then
            .Range("b1").Value = 0
        Else
            .Range("b1").Value = Round(CDbl(TextBox40), 2)
            TextBox40 = Format(CDbl(TextBox40), "#,###.00")
        End If
        Label47.Caption = Format(.Range("b4"), "#,###.00")
    End With
End Sub

Private Sub TextBox40_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With Worksheets("Eingabe Zertifikaten")
        If TextBox40.Value = "" Then
            .Range("b1").Value = 0
        Else
            .Range("b1").Value = Round(CDbl(TextBox40), 2)
            TextBox40 = Format(CDbl(TextBox40), "#,###.00")
        End If
        Label47.Caption = Format(.Range("b4"), "#,###.00")
    End With
End Sub
  1. Teste die Eingaben in der Userform, um sicherzustellen, dass die Formatierung sowohl für die Textbox als auch für das Label korrekt funktioniert.

Häufige Fehler und Lösungen

Problem: Die Eingabe in der Textbox wechselt das Format unerwartet.
Lösung: Stelle sicher, dass du das CDbl()-Format richtig verwendest, um die Textbox-Eingaben in Zahlen umzuwandeln. Wenn du mehr Nachkommastellen eingibst, überprüfe, ob das Format in der Textbox korrekt gesetzt ist.

Problem: Das Label zeigt nicht die erwartete Formatierung.
Lösung: Vergewissere dich, dass der Code zur Formatierung des Labels korrekt implementiert ist, insbesondere die Verwendung von Format().


Alternative Methoden

Eine alternative Methode zur Formatierung der Textbox und des Labels ist die Verwendung des AfterUpdate-Ereignisses anstelle von Change:

Private Sub TextBox40_AfterUpdate()
    With Worksheets("Eingabe Zertifikaten")
        If TextBox40.Value = "" Then
            .Range("b1").Value = 0
        Else
            .Range("b1").Value = Round(CDbl(TextBox40), 2)
            TextBox40 = Format(CDbl(TextBox40), "#,###.00")
        End If
        Label47.Caption = Format(.Range("b4"), "#,###.00")
    End With
End Sub

Diese Methode sorgt dafür, dass die Formatierung erst nach der vollständigen Eingabe des Wertes angewendet wird.


Praktische Beispiele

  1. Zahlenformat in der Textbox:
    Um sicherzustellen, dass die Nutzer immer das richtige Format eingeben, kannst du die Formatierung direkt beim UserForm_Initialize ausführen:
Private Sub UserForm_Initialize()
    TextBox40 = Format(0, "#,###.00")
End Sub
  1. IBAN Formatierung:
    Wenn du die IBAN in einer Textbox formatieren möchtest, kannst du eine Funktion erstellen, um die Eingabe entsprechend zu formatieren:
Function FormatIBAN(iban As String) As String
    FormatIBAN = "DE" & Left(iban, 18) ' Beispiel für eine deutsche IBAN
End Function

Tipps für Profis

  • Verwende CDbl: Stelle sicher, dass du CDbl() benutzt, um sicherzustellen, dass die Textbox-Werte als Zahlen behandelt werden.
  • Bedingte Formatierung: Du kannst If-Bedingungen einsetzen, um die Formatierung basierend auf bestimmten Eingaben dynamisch zu ändern.
  • Standardwerte: Setze Standardwerte in der Userform, um die Benutzererfahrung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die Textbox so formatieren, dass sie nur Zahlen akzeptiert?
Verwende das KeyPress-Ereignis, um Eingaben zu filtern und nur numerische Werte zuzulassen.

2. Was ist der Unterschied zwischen Change und AfterUpdate?
Change wird bei jeder Änderung in der Textbox ausgelöst, während AfterUpdate erst nach dem Verlassen der Textbox aktiviert wird, was nützlich ist, um ungewollte Formatierungen während der Eingabe zu vermeiden.

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