Clever-Excel-Forum

Normale Version: Textbox in Zelle eintragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
F
5 Betrag
655,13
728,6

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 dargestellt
Excel-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


[attachment=10670]
Hi Ralf,

ich denke, das liegt an der Gleitkommaproblematik bei Excel. Hierzu mal ein Video von Andreas Thehos: https://www.youtube.com/watch?v=04cWL6P06e0

Laut dem Video hilft RUNDEN.
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!
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

ABCDEFGJMNQRST
36408.04.17500500,062,20   79,99 €   1,29 € 12,4  0,16 € 10,166     0,13 € hier    799,90 € -    799,90 €
36508.04.171.100600,075,00 100,00 €   1,33 € 12,5  0,17 € 11,126     0,14 € wieder hier 1.000,00 € - 1.000,00 €
36608.04.171.300200,018,00   20,50 €   1,14 € 9,0  0,10 € 10,870     0,14 € dort    205,00 € -    205,00 €
36708.04.171.403102,512,55   18,05 €   1,44 € 12,2  0,18 € 10,950     0,14 € na wo wohl    180,50 € -    180,50 €
Formeln der Tabelle
ZelleFormel
S364=F364*10
T364=S364*-1

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
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
Hi,

(08.04.2017, 12: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.
Code:
Public Betrag As Single
ändern in

Code:
Public Betrag As Currency
oder wofür ist
Code:
Betrag = CCur(textBox4.Value)
gut
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
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
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
Seiten: 1 2