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

Forumthread: Zahlenformat in VBA

Zahlenformat in VBA
Rainer
Hallo! Ich stehe vor einem banalen Problem ud komme nicht weiter....Per VBA lese ich einen Zellwert aus, den ich später wieder 1:1 ausgehen will. Steht in der betreffenden Zelle der Wert '21', so wird auch '21'. zurückgemeldet. Ich möchte in diesem Falle jedoch '21.00', also mit 2 Dezimalstellen zurückbekommen. Die Rundungsfunktion liefert mit immer die Ganzzahl und geht nicht auf 2 Dezimalstellen ein....Wie kann ich sowas denn machen?
Danke für euer Feedback
Rainer
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Zahlenformat in VBA
02.11.2009 12:19:29
Ingo
hallo rainer,
numberformat ="0.00"
mfG
Ingo Christiansen
AW: Zahlenformat in VBA
02.11.2009 12:27:24
Rainer
Hallo! danke für deine Rückmeldung...Wie lautet denn die Syntax hierzu? Mit Numberformat hatte ich rumprobiert, kam aber nicht zu rande..Ich habs so probiert.
betrag_nummer = Cells(x, 11).Value NumberFormat = "0.00"
und so
betrag_nummer = Cells(x, 11). NumberFormat = "0.00"
Danke für deine Rückinfo
Anzeige
AW: Zahlenformat in VBA
02.11.2009 12:34:22
Rudi
Hallo,
=format(cells(x,11),"0.00")
dann ist es aber ein Text und keine Zahl mehr.
Gruß
Rudi
Du musst natürlich die Zelle formatieren,...
02.11.2009 12:57:47
Luc:-?
...wenn der Wert in eine Zelle ausgegeben wird, Rainer,
bspw mit einer udFkt, das geht dann aber nicht mit Range(...).NumberFormat, weil eine Fkt so etwas nicht darf. Alternativ mit einer Subroutine ginge das, macht aber nur Sinn, wenn du wirklich Zellen füllen willst, was ja den Anschein hat. Das erfordert aber eine separate Anweisung, denn es ist eine eigene Eigenschaft des Range-Objekts. Das wird auch alles in der VBE-Hilfe erklärt, warum dann der „Blindflug"...?
Wenn du das anderweitig ausgeben willst, wäre Rudis Lösung angesagt! Und gerundet hast du hoffentlich (kann ich jetzt nicht sehen) mit Round-Arg2 = 2 (bei %Zahlen wären es stets 2 mehr)...
Gruß Luc :-?
PS: Du merkst sicher, dass du uns zu wenig Infos gegeben hast...!
Anzeige
Wert und Format einer Zelle
02.11.2009 14:32:49
Erich
Hi Rainer,
betrag_nummer dürfte der Name einer Variablen sein, wohl vom Typ Double.
Dann könnte das im Prinzip so gehen:

Sub aa()
Dim betrag_nummer As Double
betrag_nummer = Cells(x, 11).Value
Cells(x + 1, 12).NumberFormat = "0.00"
Cells(x + 1, 12).Value = betrag_nummer
' oder besser
With Cells(x + 1, 12)
.NumberFormat = "0.00"
.Value = betrag_nummer
End With
End Sub
Die Zielzelle hat u. a. die beiden Eigenschaften Value (z. B. 0,5) und NumberFormat.
Der Wert 0,5 kann je nach NumberFormat als 0,5, 0,50, 5,00E-01, 1, 1/2, 50%, ... angezeigt werden.
Durch diese unterschiedlichen Formate ändert sich der Wert nicht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Wert und Format einer Zelle
02.11.2009 14:52:31
Rainer
Hallo! Vielen Dank für die Rückmeldung. Leider ändert das mein Problem nicht.....In der entsprechenden Zelle habe ich damit nur die Wertedarstellung geändert, jedoch nicht den Zellwert selbst. Den Zellwert verschicke ich später in einem Mail und da hätte ich gerne '21.00' anstelle von '21' angezeigt...
Gruß
Rainer
Anzeige
Rückfrage
02.11.2009 15:20:43
Erich
Hi,
"Den Zellwert verschicke ich später in einem Mail "
Wie tust du das? Hier wäre wohl die Stelle zum Eingreifen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Rückfrage
02.11.2009 15:33:43
Rainer
Hallo! Ich lese den Zellwert über eine Schleife mittele cells(x,11).value aus und schreiben den in eien Variable. Diese Variable hat aber bei ganzzahligen Werten keine Dezimalen so wie ich es gerne hätte....
Anzeige
eine Variable hat kein Format
02.11.2009 17:49:30
Erich
Hi Rainer,
meine Frage war: "Den Zellwert verschicke ich später in einem Mail." Wie tust du das?
Auf die Frage hast du gar nicht geantwortet. Tust du das noch?
Ich hatte auch geschrieben: "Hier wäre wohl die Stelle zum Eingreifen."
Zu deinem letzten Beitrag:
"Diese Variable hat aber bei ganzzahligen Werten keine Dezimalen"
Eine Variable hat keine Dezimalen. Sie hat überhaupt kein Format, nur einen Wert.
Eine Zelle dagegen hat sowohl Wert als auch (Number)Format.
Davon hatte ich auch schon mal geschrieben.
Also noch mal:
Wie kommt bei dir der Wert der Variablen in die Mail?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Ach Erich, ob er das begreift...? owehT
02.11.2009 21:25:28
Luc:-?
Gr... Luc :-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zahlenformat in VBA


Schritt-für-Schritt-Anleitung

Um ein Zahlenformat in VBA festzulegen, kannst du die NumberFormat-Eigenschaft der Zelle verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, um sicherzustellen, dass du das gewünschte Format anwendest:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblatt)“ und wähle „Einfügen > Modul“.

  3. Schreibe den Code: Verwende den folgenden Beispielcode, um ein Zahlenformat anzuwenden:

    Sub SetNumberFormat()
       Dim betrag_nummer As Double
       betrag_nummer = Cells(1, 1).Value ' Beispiel: Wert aus Zelle A1
       With Cells(1, 2) ' Beispiel: Ausgabe in Zelle B1
           .NumberFormat = "0.00" ' Setze das Format auf 2 Dezimalstellen
           .Value = betrag_nummer
       End With
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro auszuführen und das Format anzuwenden.


Häufige Fehler und Lösungen

  • Problem: Der Wert wird als Ganzzahl ohne Dezimalstellen angezeigt.

    • Lösung: Stelle sicher, dass du das NumberFormat korrekt anwendest, bevor du den Wert zuweist. Der Code sollte wie im obigen Beispiel aussehen.
  • Problem: Die letzte Zahl wird immer als 0 angezeigt.

    • Lösung: Überprüfe, ob die Zelle richtig formatiert wurde und ob der Wert korrekt zugewiesen wurde. Achte darauf, dass die Zelle nicht als Text formatiert ist.

Alternative Methoden

Wenn du eine andere Methode bevorzugst, um Zahlenformate in VBA zu setzen, kannst du auch die Format-Funktion verwenden. Beachte jedoch, dass dies den Wert in einen Text umwandelt:

Sub FormatAsText()
    Dim betrag_nummer As Double
    betrag_nummer = Cells(1, 1).Value
    Cells(1, 2).Value = Format(betrag_nummer, "0.00") ' Ausgabe als Text
End Sub

Verwende diese Methode nur, wenn du sicher bist, dass die Zelle als Text behandelt werden kann.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von NumberFormat in VBA:

  1. Zelle formatieren:

    Cells(2, 1).NumberFormat = "0.00" ' Zelle A2 formatieren
  2. Prozentformat verwenden:

    Cells(3, 1).NumberFormat = "0%" ' Zelle A3 als Prozent formatieren
  3. Wissenschaftliches Format:

    Cells(4, 1).NumberFormat = "0.00E+00" ' Zelle A4 wissenschaftlich formatieren

Tipps für Profis

  • Verwende die With-Anweisung, um den Code sauberer und lesbarer zu gestalten, wenn du mehrere Eigenschaften einer Zelle ändern möchtest.
  • Teste verschiedene NumberFormat-Werte, um das gewünschte Ergebnis zu erzielen. Ein Beispiel für das Excel 0.00 Format ist sehr nützlich, wenn du mit finanziellen Daten arbeitest.
  • Halte die VBA-Dokumentation bereit, um Informationen über NumberFormat und andere nützliche Funktionen zu erhalten.

FAQ: Häufige Fragen

1. Wie kann ich das Zahlenformat in einer Schleife für mehrere Zellen anwenden?
Du kannst eine Schleife verwenden, um das Format für jede Zelle anzuwenden. Beispiel:

Sub FormatMultipleCells()
    Dim i As Integer
    For i = 1 To 10
        Cells(i, 1).NumberFormat = "0.00"
    Next i
End Sub

2. Warum wird der Wert in der Zelle nicht aktualisiert, wenn ich das Format ändere?
Das Format ändert nur die Anzeige des Wertes, nicht den Wert selbst. Um den Wert mit Dezimalstellen zu erhalten, stelle sicher, dass du den Wert korrekt zuweist, nachdem das Format festgelegt wurde.

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