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

Forumthread: Zahlenformat in Textbox (Userform)

Zahlenformat in Textbox (Userform)
09.01.2019 15:38:58
Dave
Hallo zusammen,
in einer UF sollen 3 Zahlen (Betrag1, Wechselkurs, Betrag2) stehen. Beim Aufruf wird standardmäßig überall 1 eingetragen. Dabei sollen die Beträge mit Tausender-Punkt und 2 Nachkommastellen stehen, der Kurs mit 4 Nachkommastellen.
Aus meiner Recherche hatte ich das Nachfolgende ausprobiert:

Private Sub UserForm_Initialize()
Dim Exchange As Double, Betrag1 As Double, Betrag2 As Double
Exchange = Format(CDbl(1), "#.##0,00")
Betrag1 = Format(CDbl(1), "#.##0,00")
Betrag2 = Format(CDbl(1), "#.##0,00")

Leider klappt es nicht. Ohne das ganze "Format-Zeugs" standen wenigstens die Zahlen drin und ich konnte damit auch rechnen. Jetzt bleiben alle Textfelder einfach leer. Habe schon diverse Kombinationen ausprobiert, ohne Erfolg.
Was mach ich falsch?
Danke!
Gruß
David
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenformat in Textbox (Userform)
09.01.2019 15:48:22
Rudi
Hallo,
du musst die Variablen als String oder als Variant deklarieren.
Format(...) ergibt einen String.
Gruß
Rudi
AW: Zahlenformat in Textbox (Userform)
09.01.2019 16:10:16
Dave
Ok, stimmt, das war mir in dem Zusammenhang nicht bewusst, hätte man aus der ensprechenden Formel-Funktion drauf schließen können. :-)
Ich würde den Inhalt der Textboxen gern als Zahl weiterverwenden und entsprechend formatieren. Geht das überhaupt in einer Textbox?
Danke und Gruß
Anzeige
AW: Zahlenformat in Textbox (Userform)
09.01.2019 16:25:23
UweD
Hallo nochmal
&GT&gtIch würde den Inhalt der Textboxen gern als Zahl weiterverwenden und entsprechend formatieren.
Wie der Name schon sagt, sind TEXTboxen für Text gedacht
Das Weiterrechnen kann aber nach der Eingabe erfolgen.
Sub tt()
    Dim Exchange, Betrag1, Betrag2
    Exchange = InputBox("Exchange", "Wert", Format(1, "#,##0.0000"))
    Betrag1 = InputBox("Betrag1", "Wert", Format(1, "#,##0.00"))
    Betrag2 = InputBox("Betrag2", "Wert", Format(1, "#,##0.00"))
    
    'Beispielrechnung 
    Test = (CDbl(Exchange) * CDbl(Betrag1) * 1.19 * 2) / CDbl(Betrag2)
End Sub
Evtl solltest du mal genauer erklären, was du vorhast.
LG UweD
Anzeige
AW: Zahlenformat in Textbox (Userform)
10.01.2019 08:12:56
Dave
Hallo Uwe,
danke, aber das hilft mir nicht, da meine Frage sich auf eine Userform bezieht, d.h. das nacheinanderfolgende Abarbeiten von mehreren Input-Boxen ist nicht gewünscht.
Im Prinzip hab ich eine Userform kreiert, auf der Reisekosten eingegeben werden können. Beim Betrag sind Fremdwährungen oft vorkommend, so dass ich hier 2 Betragsfelder und einen Kurs brauche. Eingabe und Design etc. klappt auch alles, nun bin ich dabei, die Berechnungen zu realisieren und dabei müssen halt diese 3 Felder als idealerweise als Zahlen weiterverarbeitet werden.
Falls es nicht anders geht, muss ich mit der Darstellung als Text vorlieb nehmen und erst am Ende beim Übertrag in die Tabelle die Umwandlung vornehmen. Ich dachte nur, dass es einfacher wäre, wenn das Formular gleich mit "richtigen" Zahlen rechnet.
Sofern ich andere als Textboxen benutzen sollte, kann ich das gerne einbauen, sie müssen nur eingabefähig bleiben, dh. der Benutzer muss in jedem der 3 Felder manuell eingreifen können.
Gruß
David
Anzeige
Weiter nur mit Musterdatei
10.01.2019 14:15:20
UweD
AW: Weiter nur mit Musterdatei
10.01.2019 14:23:11
Dave
Ok, dann muss ich hier abbrechen. Das ist technisch zu aufwändig umzusetzen, die Datei soweit zu bereinigen.
Danke für deine Bemühungen.
AW: Zahlenformat in Textbox (Userform)
09.01.2019 15:49:23
UweD
Hallo
1)
Du dimensionierst die Variable doch als Double. Das sind GANZE Zahlen ohne Nachkomma.
Also entweder weglassen oder als String
2)
Die musst das amerikanische Format in VBa verwenden. Dort sind Punkt und Komme getauscht.
Sub tt()
    Dim Exchange, Betrag1, Betrag2
    Exchange = Format(1, "#,##0.0000")
    Betrag1 = Format(1, "#,##0.00")
    Betrag2 = Format(1, "#,##0.00")
End Sub
LG UweD
Anzeige
AW: Zahlenformat in Textbox (Userform)
09.01.2019 16:08:38
Dave
Die Dimensionierung war eigentlich nur ein Test, dachte, das CDbl bedeutet dieses Format, nur mit anderer Syntax. Hatte vorher gar keine dabei, ging da auch nicht.
Komma und Punkt tauschen hatte ich auch schon, da kam eine Fehlermeldung.
Im Prinzip möchte ich, dass er die Eingabe als Zahl weiterverwendet und entsprechend auch anzeigt.
Danke.
Anzeige
Unsinn, Uwe
09.01.2019 16:38:46
Rudi
Du dimensionierst die Variable doch als Double. Das sind GANZE Zahlen ohne Nachkomma.
Seit wann das denn?
Double=Gleitkommazahl mit doppelter Genauigkeit
Gruß
Rudi
ups.
09.01.2019 16:47:46
UweD
Da hab ich wohl Double mit Long verwechselt.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zahlenformat in Textbox einer Userform optimieren


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Erstelle eine neue UserForm oder öffne eine bestehende.

  3. Füge drei TextBoxen für die Eingabe von Betrag1, Wechselkurs und Betrag2 hinzu.

  4. Setze den folgenden Code in das UserForm_Initialize-Ereignis ein:

    Private Sub UserForm_Initialize()
       TextBox1.Value = Format(1, "#,##0.00") ' Betrag1
       TextBox2.Value = Format(1, "#,##0.0000") ' Wechselkurs
       TextBox3.Value = Format(1, "#,##0.00") ' Betrag2
    End Sub
  5. Achte darauf, dass die TextBoxen den Textbox format-Stil haben, um die Zahlen korrekt anzuzeigen.

  6. Um die Eingaben später als Zahlen zu verwenden, kannst du den Wert der TextBoxen mit CDbl konvertieren, wie zum Beispiel:

    Dim Betrag1 As Double
    Betrag1 = CDbl(TextBox1.Value)

Häufige Fehler und Lösungen

  • Fehler: TextBox bleibt leer
    Wenn die TextBox leer bleibt, könnte es daran liegen, dass die Variablen nicht korrekt deklariert sind. Stelle sicher, dass du die Werte als String oder Variant deklarierst, da Format einen String zurückgibt.

  • Fehler: Falsches Zahlenformat
    Wenn du beim Formatieren einen Fehler erhältst, überprüfe, ob du das amerikanische Format mit Punkt und Komma korrekt verwendest. Zum Beispiel: Format(1, "#,##0.00").


Alternative Methoden

Falls du die Ziffern nicht in einer TextBox eingeben möchtest, kannst du stattdessen InputBox verwenden, um die Werte abzurufen und sie dann in Variablen zu speichern:

Sub Eingabe()
    Dim Betrag1 As String
    Betrag1 = InputBox("Gib Betrag1 ein:", "Wert", Format(1, "#,##0.00"))
End Sub

Diese Methode kann nützlich sein, wenn du die Werte nicht direkt in einer UserForm manipulieren möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Eingaben weiterverarbeiten kannst:

Sub Berechnung()
    Dim Exchange As Double, Betrag1 As Double, Betrag2 As Double
    Exchange = CDbl(TextBox2.Value) ' Wechselkurs
    Betrag1 = CDbl(TextBox1.Value) ' Betrag1
    Betrag2 = CDbl(TextBox3.Value) ' Betrag2

    Dim Ergebnis As Double
    Ergebnis = (Exchange * Betrag1 * 1.19 * 2) / Betrag2
    MsgBox "Das Ergebnis ist: " & Format(Ergebnis, "#,##0.00")
End Sub

Tipps für Profis

  • Verwende die UserForm nur für Eingaben, die eine direkte Interaktion erfordern.

  • Stelle sicher, dass du die Eingaben validierst, bevor du mit den Berechnungen fortfährst. Du kannst dies durch eine einfache Überprüfung der TextBox-Werte tun.

  • Experimentiere mit verschiedenen Formaten in Textbox vba excel format number, um die für deine Anwendung am besten geeigneten Darstellungsformen zu finden.


FAQ: Häufige Fragen

1. Kann ich in einer TextBox nur Zahlen eingeben?
Ja, du kannst eine Validierung implementieren, um sicherzustellen, dass nur gültige Zahlen eingegeben werden.

2. Wie kann ich sicherstellen, dass die Formatierung korrekt bleibt?
Verwende das UserForm_Initialize-Ereignis, um die Formatierung der TextBoxen beim Öffnen der UserForm festzulegen.

3. Ist es möglich, mit den Werten in den TextBoxen zu rechnen?
Ja, du kannst die Werte aus den TextBoxen in Double umwandeln, um Berechnungen durchzuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige