Runden von Zahlen in Excel über Makro
Hallo Community
Ich habe eine Frage zum Runden von Zahlen mit/in einem Excel Makro. Ich habe folgende Situation:
In Excel werden Werte aus einem anderen Programm übertragen. Hier in Feld C4 ist es die Zeit in Stunden. Diese Zahl wird hier über
=RUNDEN('Aspen Custom Modeler Language'|alles_im_ggw.acmf!\awite02.laufzeit;3)
aus dem Programm ausgelesen. Hier ist bereits mein erster Versuch die Zahl zu runden.
In meinem Makro wird nun (siehe Bild2 oder hier der Code)
time = Cells(4, 5)
runtime = Round(Cells(4, 3).Value, 3)
Cells(time, 8) = Round(runtime, 3)
der Wert der Zelle C4 (andere Schreibweise 4,3 ) der Variable runtime zugewiesen. (Hier mit Round der zweite Versuch die Zahl zu runden)
Der Wert der Variable Runtime wird nun in eine Zelle einkopiert. Hier der dritte Versuch die Zahl zu runden.
Wenn ich jetzt (siehe Bild3) nachschaue, ob die Zahl wirklich gerundet wurde seh ich:
NOPE!!
Für Excel ist es nach wie vor die Zahl 0,00899999961256981 und nicht einfach 0,009 (was ich aber haben will)
Meine Frage lautet nun, was mach ich falsch bzw. wie bekomm ich diese Zahl nun entgültig gerundet!!!
Vielen Dank im Voraus
Mit freundlichen Grüßen
fiASco
EDIT: OK die Bilder habe ich zwar hochgeladen aber ich selber seh sie nicht. Aber eigentlich steht eh alles wichtige im Text drin.
Ich habe eine Frage zum Runden von Zahlen mit/in einem Excel Makro. Ich habe folgende Situation:
In Excel werden Werte aus einem anderen Programm übertragen. Hier in Feld C4 ist es die Zeit in Stunden. Diese Zahl wird hier über
=RUNDEN('Aspen Custom Modeler Language'|alles_im_ggw.acmf!\awite02.laufzeit;3)
aus dem Programm ausgelesen. Hier ist bereits mein erster Versuch die Zahl zu runden.
In meinem Makro wird nun (siehe Bild2 oder hier der Code)

runtime = Round(Cells(4, 3).Value, 3)
Cells(time, 8) = Round(runtime, 3)
der Wert der Zelle C4 (andere Schreibweise 4,3 ) der Variable runtime zugewiesen. (Hier mit Round der zweite Versuch die Zahl zu runden)
Der Wert der Variable Runtime wird nun in eine Zelle einkopiert. Hier der dritte Versuch die Zahl zu runden.
Wenn ich jetzt (siehe Bild3) nachschaue, ob die Zahl wirklich gerundet wurde seh ich:
NOPE!!
Für Excel ist es nach wie vor die Zahl 0,00899999961256981 und nicht einfach 0,009 (was ich aber haben will)
Meine Frage lautet nun, was mach ich falsch bzw. wie bekomm ich diese Zahl nun entgültig gerundet!!!
Vielen Dank im Voraus
Mit freundlichen Grüßen
fiASco
EDIT: OK die Bilder habe ich zwar hochgeladen aber ich selber seh sie nicht. Aber eigentlich steht eh alles wichtige im Text drin.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 275639
Url: https://administrator.de/forum/runden-von-zahlen-in-excel-ueber-makro-275639.html
Ausgedruckt am: 25.04.2025 um 03:04 Uhr
7 Kommentare
Neuester Kommentar

Beispiel:
Geht einwandfrei ...
Vermutlich hast du irgendwo den Wert nicht als Zahl sondern als Text vorliegen, dann solltest du ihn erst mit CDbl() konvertieren.
Gruß jodel
Sub TestRunden()
Dim zahl As Double
zahl = 8.99999961256981E-03
With Range("A1")
.NumberFormat = "0.000"
.Value = Round(zahl, 3)
End With
End Sub
Vermutlich hast du irgendwo den Wert nicht als Zahl sondern als Text vorliegen, dann solltest du ihn erst mit CDbl() konvertieren.
Gruß jodel
EDIT: OK die Bilder habe ich zwar hochgeladen aber ich selber seh sie nicht.
p.s. Wie du Bilder deinem Beitrag richtig hinzufügst, kannst du in der Formatierungs-FAQ nachlesen.Aber eigentlich steht eh alles wichtige im Text drin.
Für ein Verständnis was du genau meinst wäre es aber schön wenn du sie trotzdem noch ergänzt.
Dann musst du das Sheet mit angeben:
oder wenn es ein bestimmtes und nicht das aktive Sheet sein soll:
With ActiveSheet.Range(time,8)
With Sheets(1).Range(time,8)

Och mönsch ...wozu gibt's den Debugger 
http://we.tl/mTUAgq6sf7
Du weißt schon was ein Range ist ?
Wenn du eine Zelle mit deren Position in Zahlen ansprechen willst musst du ActiveSheet.Cells(time,8) nehmen
http://we.tl/mTUAgq6sf7
Du weißt schon was ein Range ist ?
Wenn du eine Zelle mit deren Position in Zahlen ansprechen willst musst du ActiveSheet.Cells(time,8) nehmen