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

Probleme mit den Nachkommastellen...

Forumthread: Probleme mit den Nachkommastellen...

Probleme mit den Nachkommastellen...
04.01.2009 16:33:44
Guenneisen
Hallo liebe Forumler und nachträglich noch ein frohes Neues!
ich hoffe, Ihr könnt mir helfen..
es geht um die Nachkommastellen...solz und kist sollen nach der 2ten nk-stelle abgeschlagen werden,
kapst jedoch nach der 2ten nk-stelle aufgerundet werden...klappt auch alles ganz gut...nun aber Folgendes:
wenn ich BMG = 181,66 setze, dann wird wird kapst (bei einem kistsatz = 0) zu 45,415 und kapst wird richtig auf 45,42 gerundet ...alles richtig!...jetzt aber folgendes Kuriosum:
wenn ich BMG = 3.227,22 setze, dann wird wird kapst (bei einem kistsatz = 0) zu 806,805 und kapst wird seltsamerweise auf 806,80 statt 806,81 gerundet ?
wenn ich kapst auf 3 NKstellen runden lasse, wird mir richtigeweise 806,805 angezeigt...
habt Ihr eine Erklärung bzw. Lsg. ?
Danke und Gruss
Gussfuss
With Me
brutto = .txtbrutto
bmg = .txtbmg
If optKiST8 = True Then
kistsatz = 0.08
kapstsatz = 24.51
ElseIf optKiST9 = True Then
kistsatz = 0.09
kapstsatz = 24.45
Else:
kistsatz = 0
kapstsatz = 25#
End If
kapst = VBA.Round(bmg / (4 + kistsatz), 2)
solz = kapst * 5.5 / 100
solz = Int(solz * 100) / 100
kist = kapst * kistsatz
kist = Int(kist * 100) / 100
gutschrift = brutto - kapst - solz - kist
End with
Me.txtkapst = kapst
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit den Nachkommastellen...
04.01.2009 17:21:29
Reinhard
Hi Guenneisen,
mir sind da in 20 Codezeilen die 11 Variablen zuviel.
Kannst du das eigentliche problem mal herauslösen und mit bedeutend weniger Varianlen nachstellen?
Gruß
Reinhard
AW: Probleme mit den Nachkommastellen...
04.01.2009 17:37:51
Gerd
Hallo Guenneisen (oder Gussfuss?),
langer Rede kurzer Sinn.
kapst = VBA.Round(bmg / (4 + kistsatz), 2)
Bugfix:
kapst = Application.Round(bmg / (4 + kistsatz), 2)
Wenn das nicht hilft, dann deklariere zusätzlich die entsprechende Variable "As Currency".
Gruß Gerd
Anzeige
AW: Probleme mit den Nachkommastellen...
05.01.2009 09:04:03
Guenneisen
Hallo Gerd,
sorry, wenn das Ganze zu lang geraten sein sollte...
hier noch mal die entscheidende Zeile:
kapst = Round(bmg /4, 2)
bei bmg = 181,66 rechnet er rundet er richtig auf 45,42 (von 45,415)
bei bmg = 3.227,22 rundet er falsch ab 806,80 (von 806,805) ?
1) Deklaration als Currency hat leider noch nicht den Erfolg gebracht
2) wenn ich Application. eingebe, bietet er mir kein "Round" an und der Compiler kann es auch nicht verabeiten
Danke vorab!
Gruss
Gussfuss
Anzeige
AW: Probleme mit den Nachkommastellen...
05.01.2009 09:45:44
Hajo_Zi
Hallo Nick,
ich habe es jetzt getestet.

Sub Test1()
MsgBox Application.WorksheetFunction.Round(806.805, 2)
End Sub


Es wird auf 806,81 gerundet.

AW: Probleme mit den Nachkommastellen...
05.01.2009 14:08:44
Guenneisen
Hallo Hajo
muss ich eine spezielle Bibliothek dazunehmen, damit der Compiler den Code
Application.WorksheetFunction.Round(806.805, 2)
lesen kann
bei mir nimmt er nur "Round" und das liefert 806,80...
Danke und Gruß
Günther
Anzeige
AW: Probleme mit den Nachkommastellen...
05.01.2009 14:23:07
Hajo_Zi
Hallo Günter,
Application.WorksheetFunction muss bei bei einigen Versionen benutzen nur Round geht erst ab einer bestimmten Version, da habe ich es mir angewöhnt es immer zu nehmen. Eine besondere Biblio ist nicht notwendig, das ist ja Excel. Inb deiner Version geht es ohne den Zusatz und Du siehst den Erfolg. Warum da ein Unterschied gemacht wird?
Gruß Hajo
Anzeige
AW: Probleme mit den Nachkommastellen...
05.01.2009 17:17:39
Guenneisen
Hallo Hajo,
ich sehe den (miss-)erfolg...runden klappt ja auch in meiner Version, jedoch wenn die 2te NK-stelle eine Null ist, rundet er ab...
hast Du eine Idee, wie man das Problem umschiffen könnte?
Nochmals danke!
Gruss
Günther
AW: Probleme mit den Nachkommastellen...
05.01.2009 17:29:04
Hajo_Zi
Hallo Günter,
benutze doch Application. Die Application ist ja in dem Fall Excel.
VBA unterscheidet sich ein wenig von Excel.
In Excel gibt es den 29.02.1900 und in VBA nicht.
So wird in Excel korrekt gerundet (mit Appliation Excel) und in VBA eben nicht.
Gruß Hajo
Anzeige
AW: Probleme mit den Nachkommastellen...
05.01.2009 17:48:50
Guenneisen
auch Application.round versteht mein compiler nicht...
ich starte das Formular/makro aus word - hängt es damit zusammen?
Gruß
Günther
AW: Probleme mit den Nachkommastellen...
05.01.2009 18:00:57
Hajo_Zi
Hallo Güter,
mit Application sprichts Du die aktuelle an und das wäre Word.

Option Explicit
Sub Guenneisen()
Dim oExcel_App As Object
Set oExcel_App = GetObject(Class:="Excel.Application")
MsgBox oExcel_App.WorksheetFunction.Round(806.605, 2)
Set oExcel_App = Nothing
End Sub


Gruß Hajo

Anzeige
AW: Probleme mit den Nachkommastellen...
06.01.2009 15:40:17
Guenneisen
Hallo Hajo,
hab das Formular jetzt nach Excel exportiert und jetzt rundet er richtig!(?)
vielen Dank für Deine Hilfe und schönen Gruß!
Günther
Warum dann Frage noch offen?
06.01.2009 16:13:00
Reinhard


AW: Probleme mit den Nachkommastellen...
06.01.2009 17:52:35
Hajo_Zi
Hallo Guenneisen,
mit meinem Code hätte es aber auch in Wod funktioniert.
Gruß Hajo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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