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

wie "Abrunden" in VBA? (erhalte Rechenfehler!)

Forumthread: wie "Abrunden" in VBA? (erhalte Rechenfehler!)

wie "Abrunden" in VBA? (erhalte Rechenfehler!)
10.07.2004 18:47:32
korbinian
Hallo,
da es in VBA keine Funktion analog zu "ABRUNDEN" in Excel gibt,
brauche ich eine eigene Funktion, z.B. diese (Abschneiden nach 1 Dez):

Function test(zahl As Double) As Double
test = Int(zahl * 10) / 10
End Function

Aufgrund von internen Rundungsfehlern erhalte ich für
=test(2,3) aber 2,2 als Ergebnis...
Frage:
Gibt es einen anderen Weg, als "int" etc. oder muss ich bracchial zur Zahl 0,000001 dazuzählen?
(oder habe ich gar eine vorhandene VBA-Funktion übersehen?)
DANKE!!!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wie "Abrunden" in VBA? (erhalte Rechenfehler!)
10.07.2004 19:01:58
Annett
Hallo korbinian
warum gibt es keine Funktion?

Sub Test()
Dim Wert As Double
Wert = 1.23
Wert = WorksheetFunction.RoundDown(Wert, 1)
End Sub

Gruß Annett
Anzeige
AW: wie "Abrunden" in VBA? (erhalte Rechenfehler!)
korbinian
Hallo nochmal und erstmal DANKE!
Jetzt hab ich aber ein dickes Problem:
Denn eigentlich brauche ich das Abrunden in ACCESS-VBA und von dort aus kann ich nicht auf die Excel-Funktion zurückgreifen...
(ich hab die Frage ins Excel-Forum gestellt, weil der Rundungsfehler in Access wie in Excel derselbe war)
Grüße
Korbinian
Anzeige
AW: wie "Abrunden" in VBA? (erhalte Rechenfehler!)
Udo
In VBA gibts keine Funktion dafür, da musst du auf die Excelfunktion zurück-
greifen:
dim variable as double
Variable = 1.23456
msgbox application.rounddown(variable,2)
Udo
AW: wie "Abrunden" in VBA? (erhalte Rechenfehler!)
korbinian
Hallo Ude
und danke für Deine Antwort!
Damit ich nicht alles neu tippen muss, verweise ich auf meine Antwort auf Annettes Beitrag.
Grüße
Korbinian
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Abrunden in VBA: Lösungen für Rechenfehler


Schritt-für-Schritt-Anleitung

Um in VBA das Abrunden von Zahlen zu realisieren, kannst du die Excel-Funktion RoundDown nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung, um dies zu implementieren:

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Gib den folgenden Code ein:

    Sub TestAbrunden()
       Dim Wert As Double
       Wert = 1.23456
       MsgBox Application.WorksheetFunction.RoundDown(Wert, 2)
    End Sub
  4. Führe das Skript aus: Drücke F5, um den Code auszuführen und das Ergebnis zu sehen.


Häufige Fehler und Lösungen

  • Rechenfehler: Wenn du beim Abrunden in VBA unerwartete Ergebnisse erhältst, z.B. =test(2.3) gibt 2.2 zurück, könnte dies an internen Rundungsfehlern liegen. Eine Lösung ist, die Zahl vorher leicht zu erhöhen, z.B. durch Hinzufügen von 0.000001.

  • Zugriff auf Excel-Funktionen: Stelle sicher, dass du Application.WorksheetFunction korrekt verwendest, um auf die Excel-Funktion RoundDown zuzugreifen. Wenn die Funktion nicht gefunden wird, könnte dies an einem falschen Verweis liegen.


Alternative Methoden

Wenn du in VBA keine Excel-Funktion verwenden möchtest, kannst du eigene Abrundungsfunktionen schreiben:

  • Eigene Abrundungsfunktion:

    Function Abrunden(zahl As Double, dezimalstellen As Integer) As Double
       Abrunden = Int(zahl * 10 ^ dezimalstellen) / (10 ^ dezimalstellen)
    End Function

Diese Funktion erlaubt dir, eine Zahl auf eine bestimmte Anzahl von Dezimalstellen abzurunden.


Praktische Beispiele

Hier sind einige nützliche Beispiele zur Anwendung der RoundDown Funktion in VBA:

  • Abrunden auf eine ganze Zahl:

    Sub AbrundenAufGanzeZahl()
       Dim Wert As Double
       Wert = 3.78
       MsgBox Application.WorksheetFunction.RoundDown(Wert, 0) ' Gibt 3 zurück
    End Sub
  • Abrunden auf zwei Dezimalstellen:

    Sub AbrundenZweiDezimalstellen()
       Dim Wert As Double
       Wert = 5.6789
       MsgBox Application.WorksheetFunction.RoundDown(Wert, 2) ' Gibt 5.67 zurück
    End Sub

Tipps für Profis

  • Vermeide Rundungsfehler: Nutze immer die Excel-Funktionen, wenn du mit Gleitkommazahlen in VBA arbeitest. Bei Unsicherheiten über die Genauigkeit, verwende Decimal anstelle von Double.

  • Verwendung von WorksheetFunction: Denke daran, dass die Verwendung von Application.WorksheetFunction dir Zugriff auf viele nützliche Excel-Funktionen gibt, die in VBA nicht direkt verfügbar sind.


FAQ: Häufige Fragen

1. Gibt es in VBA eine native Abrundungsfunktion? Nein, VBA hat keine native Funktion zum Abrunden wie in Excel. Du musst auf die Excel-Funktion RoundDown zurückgreifen.

2. Wie kann ich eine eigene Abrundungsfunktion erstellen? Du kannst eine benutzerdefinierte Funktion in VBA erstellen, die die Int-Funktion oder eine eigene Logik zum Abrunden verwendet. Beispiel siehe oben.

3. Was tun bei Rundungsfehlern in Excel? Wenn du Rechenfehler in Excel erlebst, könntest du versuchen, eine sehr kleine Zahl (z.B. 0.000001) zu deiner Zahl hinzuzufügen, bevor du abrundest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige