Registriert seit: 10.04.2014
Version(en): 2016 + 365
08.04.2017, 11:45
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2017, 12:21 von Rabe.)
Hi, über eine Textbox in einer Userform trage ich einen Betrag in eine Zelle ein, mit dem dann weitergerechnet wird. Obwohl ich den Geldbetrag mit max. 2 Nachkommastellen in die Textbox eingebe, werden in der Zelle 12 Nachkommastellen eingetragen. Wie verhindere ich das? Hier der Codeteil im Textbox_Exit TextBox4.Value = Format(TextBox4.Value, "#,##0.00") Betrag = CCur(TextBox4.Value) Hier das Eintragen in die Zelle: .Range("F" & Zeile) = Betrag Hier ein kleiner Ausschnitt: Tankliste Zahlenformate | Zelle | Format | Wert | F5 | '_-* #.##0,00 €_-;-* #.##0,00 €_-;_-* "-"?? €_-;_-@_- | Betrag | F6 | '_-* #.##0,00 €_-;-* #.##0,00 €_-;_-* "-"?? €_-;_-@_- | 55,1300010681152 | F7 | '_-* #.##0,00 €_-;-* #.##0,00 €_-;_-* "-"?? €_-;_-@_- | 28,6000003814697 | Zellen mit Format Standard werden nicht dargestelltExcel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 19.07 einschl. 64 Bit |
Fahrtenbuch - Tanken - für Forum.xlsb (Größe: 52,75 KB / Downloads: 9)
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi Ralf, ich denke, das liegt an der Gleitkommaproblematik bei Excel. Hierzu mal ein Video von Andreas Thehos: https://www.youtube.com/watch?v=04cWL6P06e0Laut dem Video hilft RUNDEN.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 11.04.2014
Version(en): 2021
08.04.2017, 13:07
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2017, 13:07 von Glausius.)
Hallo Günter, Hallo Ralf,
habe ich gerade versucht mit dem Runden - hilft leider auch nicht! Selbst alle möglichen Konvertierungen des Textes aus der Textbox in Zahlenformate ignoriert die Angabe von Nachkommastellen und zeigt immer die vollen 13 möglichen Nachkommastellen. Runden per Formel behebt das Problem - Runden per VBA nicht.
Man könnte einen Weg über Multiplizieren, Ganzzahl und Dividieren als Rundungsroutine versuchen. @Edit: Gerade probiert - geht auch nicht!
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi Ralf, wobei hast du denn Probleme beim Weiterrechnen? Der Eintrag erfolgt aufgrund der Formatierung im Währungsformat und weiterrechnen (ohne Fehler) kann man auch. Siehe Tabellenausschnitt: Tankliste | A | B | C | D | E | F | G | J | M | N | Q | R | S | T | 364 | 08.04.17 | 500 | 500,0 | | 62,20 | 79,99 € | 1,29 € | 12,4 | 0,16 € | 10,166 | 0,13 € | hier | 799,90 € | - 799,90 € | 365 | 08.04.17 | 1.100 | 600,0 | | 75,00 | 100,00 € | 1,33 € | 12,5 | 0,17 € | 11,126 | 0,14 € | wieder hier | 1.000,00 € | - 1.000,00 € | 366 | 08.04.17 | 1.300 | 200,0 | | 18,00 | 20,50 € | 1,14 € | 9,0 | 0,10 € | 10,870 | 0,14 € | dort | 205,00 € | - 205,00 € | 367 | 08.04.17 | 1.403 | 102,5 | | 12,55 | 18,05 € | 1,44 € | 12,2 | 0,18 € | 10,950 | 0,14 € | na wo wohl | 180,50 € | - 180,50 € | Formeln der Tabelle | Zelle | Formel | S364 | =F364*10 | T364 | =S364*-1 |
| Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 29.09.2015
Version(en): 2030,5
08.04.2017, 14:18
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2017, 14:18 von snb.)
Kennst du dich aus mit 'Intelligente Tabellen ? Dann brauchst du die Formelwiederholungen nicht mehr. verzichte auf - merged cells - alle exit und enter events in Textboxen - protection des Arbeitsblattes - custom numberformats: du brauchts nur number, 2 dezimalen. Dann reicht diese Code Code: Private Sub CommandButton2_Click() ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 17) = Array(CDate(TextBox5), , TextBox2, , TextBox3, TextBox4, Format(TextBox4 / TextBox3, "0.00")) End Sub
Registriert seit: 10.04.2014
Version(en): 2016 + 365
08.04.2017, 15:11
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2017, 15:11 von Rabe.)
Hi, (08.04.2017, 13:31)WillWissen schrieb: wobei hast du denn Probleme beim Weiterrechnen? Der Eintrag erfolgt aufgrund der Formatierung im Währungsformat und weiterrechnen (ohne Fehler) kann man auch. ok, also keine Probleme beim Weiterrechnen, dann ist es nur ein Ästhetik-Problem. Mich ärgert einfach, daß das nicht so geht, wie ich will und wenn ich in die Zelle reinklicke, daß dann so viele Nachkommastellen da stehen. Ich habe es auch mit Runden und CLng mit Multiplizieren/Dividieren versucht, das ist wirklich komisch. Und die Gleitkomma-Problematik hat doch nichts mit dem eintragen in die Zelle zu tun, sondern bei Berechnungen.
Registriert seit: 25.04.2016
Version(en): 2013
08.04.2017, 15:17
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2017, 15:18 von Storax.)
Code: Public Betrag As Single
ändern in Code: Public Betrag As Currency
oder wofür ist Code: Betrag = CCur(textBox4.Value)
gut
Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:1 Nutzer sagt Danke an Storax für diesen Beitrag 28
• Rabe
Registriert seit: 11.04.2014
Version(en): 2021
Hallo Ralf, obwohl ja nun zu diesem Thema einiges geschrieben worden ist, habe ich mit meinen "spärlichen Kenntnissen" gebastelt und getestet. Mit dieser Übernahme der Werte aus der Textbox in deine Zellen funktioniert es entsprechend, wobei die 10 für einstellige und dann eben 100 für zweistellige Nachkommastellen ist (jeweils beide Zahlen anpassen: Code: kmStand = (Val(CSng(TextBox1.Value) * 10)) / 10
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Folgende(r) 1 Nutzer sagt Danke an Glausius für diesen Beitrag:1 Nutzer sagt Danke an Glausius für diesen Beitrag 28
• Rabe
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
08.04.2017, 16:18
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2017, 16:34 von Kuwer.)
Hi Ralf, Public Betrag As Double und alles ist gut. Siehe z.B. auch hier: http://www.online-excel.de/fom/fo_read.php?f=1&bzh=-1&h=40994&ao=1 Eigentlich suchte ich den hier: http://www.online-excel.de/fom/fo_read.php?f=1&bzh=-1&h=46880&ao=1 Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Rabe
Registriert seit: 29.09.2015
Version(en): 2030,5
Es gibt viele Möglichkeiten in VBA: Code: Sub M_snb() x1 = 34.04 x2 = 12.06 MsgBox FormatNumber(x1 / x2, 2) MsgBox FormatNumber(x1 / x2, 3) MsgBox FormatNumber(x1 / x2, 4) MsgBox Round(x1 / x2, 2) MsgBox Round(x1 / x2, 3) MsgBox Round(x1 / x2, 4) MsgBox Format(x1 / x2, "fixed") MsgBox Format(x1 / x2, "0.00") MsgBox Format(x1 / x2, "#.##") MsgBox Format(x1 / x2, "0.000") MsgBox Format(x1 / x2, "#.##") MsgBox Format(x1 / x2, "0.0000") MsgBox Format(x1 / x2, "#.###") MsgBox x1 / x2 MsgBox Val(x1 / x2) MsgBox Int(x1 / x2) MsgBox Fix(x1 / x2) MsgBox CDbl(x1 / x2) MsgBox CSng(x1 / x2) MsgBox CInt(x1 / x2) MsgBox CDec(x1 / x2) MsgBox CLng(x1 / x2) MsgBox CVar(x1 / x2) MsgBox Format(x1 / x2) MsgBox Format(x1 / x2, "General Number") MsgBox Format(x1 / x2, "fixed") MsgBox Format(x1 / x2, "0.00") MsgBox Format(x1 / x2, "0.000") MsgBox Format(x1 / x2, "#.##") MsgBox Format(x1 / x2, "currency") MsgBox FormatCurrency(x1 / x2, 2) MsgBox FormatCurrency(x1 / x2, 3) MsgBox FormatCurrency(x1 / x2, 4) MsgBox Format(x1 / x2, "percent") MsgBox FormatPercent(x1 / x2, 2) MsgBox FormatPercent(x1 / x2, 3) MsgBox FormatPercent(x1 / x2, 4) End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Rabe
|