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

Forumthread: VBA - Format für Zahlen

VBA - Format für Zahlen
26.02.2020 13:06:51
Thomas
Hallo zusammen,
ich habe in einer Userform eine Textbox mit folgendem Code

With Cells(12, 2).Resize(CLng(TextBox9.Text), 1)
.FormulaR1C1 = "=RandBetween(" & CLng(TextBox1.Text) & "," & CLng(TextBox2.Text) & ")"
.Formula = .Value
End With
Die Userform übertägt den Wert nur ganzzahlig in die entsprechende Zelle. Welche Formatierung braucht es, dass der Wert mit zwei Kommstellen übertragen wird (Währung).
Vielen Dank und viele Grüße
Thomas
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Format für Zahlen
26.02.2020 13:11:32
Regina
HI,
sollte so gehen:
.NumberFormat = "#,##0.00 €"
Gruß Regina
AW: VBA - Format für Zahlen
26.02.2020 13:33:24
Thomas
Hallo Regina,
danke für deine Antwort.
So habe ich es geändert:
With Cells(12, 2).Resize(CLng(TextBox9.Text), 1)
.FormulaR1C1 = "=RandBetween(" & CLng(TextBox1.Text) & "," & CLng(TextBox2.Text) & ")"
.Formula = .Value.NumberFormat = "#,##0.00 €"
Erhalte dann allerdings einen Laufzeitfehler.
Grüße
Thomas
Anzeige
AW: VBA - Format für Zahlen
26.02.2020 13:37:29
Regina
...so:
With Cells(12, 2).Resize(CLng(TextBox9.Text), 1)
.FormulaR1C1 = "=RandBetween(" & CLng(TextBox1.Text) & "," & CLng(TextBox2.Text) & ")"
.Formula = .Value
.NumberFormat = "#,##0.00 €"
Gruß Regina
AW: VBA - Format für Zahlen
26.02.2020 13:40:29
Thomas
So, bekomme ich keinen Laufzeitfehler, rundet aber wieder auf Ganzzahlen.
Anzeige
AW: VBA - Format für Zahlen
26.02.2020 13:48:09
Regina
...ok, da bin ich jetzt auch überfragt? Landet der Wert denn als Zahl in der Zelle, d.h. kannst Du die Zellen per Hand auf Währung formatieren?
Gruß Regina
AW: VBA - Format für Zahlen
26.02.2020 13:54:08
Thomas
Ja, der Wert landet in der Zelle.
In die Textbox habe ich 0,55 geschrieben in der Zelle steht 1,00 €. Die Zellen sind als Währung formatiert.
Anzeige
AW: VBA - Format für Zahlen
26.02.2020 14:30:59
Regina
Sorry, das sehe ich erst jetzt:
Du verwendest CLng. Damit werden alle Werte zu Long-Werten, die sind ohen Dezimalzahlen. Tausche in der Formel mal CLng gegen CDbl (steht für Double, hat nachkommastellen)
Gruß Regina
AW: VBA - Format für Zahlen
26.02.2020 14:36:53
Thomas
Wenn ich alle (12) CLng durch CDbl ersetze erhalte ich
Laufzeitfehler 1004
Anwendungs- oder Objektdefinierter Fehler
Anzeige
AW: VBA - Format für Zahlen
26.02.2020 14:44:27
Regina
...ok, Du arbeitest mit RandBetween zu Deutsch Zufallsbereich... Habe ich noch nie benutzt, eben aber mal gegooglt: Diese Funktion kann nur mit ganzen Zahlen arbeiten, daher funktioniert auch nur CLng, da werden dann aber auch immer ganzen Zahlen "geliefert".
Gruß Regina
AW: VBA - Format für Zahlen
26.02.2020 14:50:05
Thomas
Das heißt, nicht lösbar? :o)
Anzeige
AW: VBA - Format für Zahlen
26.02.2020 14:54:52
Regina
....habe zumindest keine gute Idee...
Mach doch mal einen neuen Thread auf, mit dem Thema "Dezimale Zufallszahlen", vielleicht weiß jemand, wie man Zufallszahlen mit Nachkommastellen erzeugen kann.
Gruß Regina
AW: VBA - Format für Zahlen
26.02.2020 14:57:58
Thomas
Mach ich. Danke für deine Mühe und Zeit.
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zahlenformatierung in Excel VBA: So geht's


Schritt-für-Schritt-Anleitung

Um das Format für Zahlen in Excel VBA festzulegen, kannst du die NumberFormat-Eigenschaft verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, um sicherzustellen, dass deine Zahlen im gewünschten Format angezeigt werden:

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein neues Modul hinzu oder öffne ein bestehendes.
  3. Verwende den folgenden Code, um das Zahlenformat für eine bestimmte Zelle festzulegen:
With Cells(12, 2).Resize(CLng(TextBox9.Text), 1)
    .FormulaR1C1 = "=RandBetween(" & CLng(TextBox1.Text) & "," & CLng(TextBox2.Text) & ")"
    .Formula = .Value
    .NumberFormat = "#,##0.00 €" ' Währungsformat mit zwei Dezimalstellen
End With

Stelle sicher, dass du die NumberFormat-Eigenschaft nach dem Zuweisen der Formel aufrufst, um sicherzustellen, dass die Formatierung korrekt angewendet wird.


Häufige Fehler und Lösungen

  1. Laufzeitfehler 1004: Wenn du CDbl anstelle von CLng verwendest, könnte dies zu einem Laufzeitfehler führen, insbesondere wenn du die RandBetween-Funktion verwendest. Diese Funktion kann nur mit Ganzzahlen arbeiten. Verwende stattdessen CLng.

  2. Zahlen erscheinen als Ganzzahlen: Wenn deine Zahlen nach der Formatierung immer noch als Ganzzahlen angezeigt werden, überprüfe, ob die Zellen tatsächlich als Währung formatiert sind. Verwende .NumberFormat korrekt, um sicherzustellen, dass das gewünschte Format angewendet wird.


Alternative Methoden

Wenn du ein anderes Zahlenformat als Währung benötigst, kannst du die NumberFormat-Eigenschaft auch für andere Formate verwenden. Hier sind einige Beispiele:

  • Prozentformat:

    .NumberFormat = "0.00%"
  • Allgemeines Zahlformat:

    .NumberFormat = "General"
  • Benutzerdefiniertes Format:

    .NumberFormat = "[Rot]0;[Grün]0"

Diese Formate helfen dir, verschiedene Anforderungen für das excel vba zahlenformat zu erfüllen.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung der NumberFormat-Eigenschaft in VBA:

  1. Währungsformat mit zwei Dezimalstellen:

    .Cells(1, 1).NumberFormat = "#,##0.00 €"
  2. Zahlenformat mit drei Dezimalstellen:

    .Cells(1, 1).NumberFormat = "#,##0.000"
  3. Prozentformat:

    .Cells(1, 1).NumberFormat = "0.00%"

Diese Beispiele zeigen dir, wie du das vba format zahl für deine Bedürfnisse anpassen kannst.


Tipps für Profis

  • Nutze die CDbl-Funktion, wenn du mit Dezimalzahlen arbeiten möchtest, besonders wenn du Berechnungen oder Zufallszahlen generierst.
  • Überprüfe regelmäßig die Formatierung deiner Zellen, um sicherzustellen, dass sie korrekt angewendet wird.
  • Dokumentiere deinen Code mit Kommentaren, um die Lesbarkeit zu erhöhen und zukünftige Änderungen zu erleichtern.

FAQ: Häufige Fragen

1. Warum funktioniert RandBetween nicht mit Dezimalzahlen? Die RandBetween-Funktion kann nur ganze Zahlen generieren. Für Dezimalzahlen musst du eine andere Methode verwenden, wie z.B. Rnd.

2. Wie kann ich das Format einer gesamten Spalte ändern? Verwende einfach den Code:

Columns("A:A").NumberFormat = "#,##0.00 €"

3. Welche Datentypen sollte ich in VBA verwenden? Verwende CLng für Ganzzahlen und CDbl für Dezimalzahlen, um sicherzustellen, dass die Werte korrekt behandelt werden.

4. Wie kann ich das Format einer Zelle zurücksetzen? Setze die NumberFormat-Eigenschaft auf "General":

.Cells(1, 1).NumberFormat = "General"

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