Hallo
Das folgende meinem Fundus:
…schnipp…
Es kursiert leider die Fehlinformation, dass die Access-Funktion „CCur()“ (Konvertiere in Währung) eine korrekte kaufmännische Rundung vornimmt. Dem ist aber nicht so. Wenn Sie einmal im Direktbereich
? Round(CCur(34.845), 2)
eingeben, wird in Access 2000, 2002 und 2003 als Ergebnis „34,84“ ausgegeben. Geben Sie die gleiche Anweisung in Access 97 mit „unserer“ Funktion „Round()“ ein, wird das korrekte Ergebnis „34,85“ berechnet. Um auch in Access 2000, 2002 und 2003 korrekt kaufmännisch zu runden, verwenden Sie zur Vermeidung von Namenskonflikten eine anders benannte Variante unserer Funktion:
Function Runden(varWert As Variant, _
intDezStellen As Integer) As Currency
Dim dblDez As Double
Dim dblTemp1 As Double, dblTemp2 As Double
On Error GoTo FehlerBeimRunden
varWert = CCur(varWert)
dblDez = 10 ^ intDezStellen
dblTemp1 = Abs(varWert) * dblDez + 0.5
dblTemp2 = Int("" & dblTemp1) / dblDez
If Abs(varWert) varWert Then
Runden = dblTemp2 * -1
Else
Runden = dblTemp2
End If
EndeRunden:
Exit Function
FehlerBeimRunden:
Runden = 0
Resume EndeRunden
End Function
In Ihren VBA-Routinen ersetzen Sie dann den Aufruf von „Round()“ durch den Aufruf von „Runden()“.
…schnapp…
Hilfts weiter ?
Wenn nicht solltest du mal deine Formel posten
Stefan