Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
528to532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
528to532
528to532
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Punkt statt Komma -> Falsche Berechnung in VBA
08.12.2004 18:47:28
Manfred
Hallo Leute...
Habe mich gestern schon mit dem Problem an euch gewendet, jedoch leider noch ohne Erfolg. Jetzt konnte ich das Problem eingrenzen!
Ausgangssituation:
Mein VBA Programm liefert(e) auf englischen Betriebssystemen falsche Werte. Dies hängt offensichtlich damit zusammen, das die Kommas zur Darstellung in einer UserForm von VBA in Punkt-Format umgewandelt werden.
Excel/VBA wandelt die Werte beim Einlesen in eine Userform (Formular) KORREKT in die Punkt-Form um (also einfach ein Punkt statt Beistrich) und beim Zurückschreiben von solchen Punkt-Werten in ein Excel Sheet werden die Werte auch wieder KORREKT in die Komma-Form zurückgewandelt. ABER...
Problem:
Bei Berechnungen innerhalb der Userform ignoriert VBA einfach den Punkt. Egal, ob ich den Wert einer Textbox (z.B. textbox123.value) direkt verwende oder ihn zuerst mit etwa CDbl auf einen Double-Wert konvertiere: in ALLEN FÄLLEN ignoriert VBA einfach den Punkt und rechnet mit den Ziffern als Ganzzahl! Warum?
Beispiel:
Im Sheet stehen die Werte: 2,5 / 0,5 / 0,02
In der Userform stehen dann die Werte: 2.5 / 0.5 / 0.02
Rechnen tut VBA aber mit: 25 / 5 / 2 !!!!!!!!!!!
Und ich habe schon alles probiert. Darunter folgendes:
- Werte mit Namen alleine auslesen (textbox123)
- Werte mit .value Attribut auslesen (textbox123.value)
- Werte mit .Text Attribut auslesen (textbox123.text)
- Werte auf Double konvertieren (CDbl(textbox...))
Also für mich ist das völlig unklar und schön langsam ziemlich ärgerlich. Das einzige was ich da noch vermuten kann ist, dass VBA die Werte zwar zu Punkt-Format konvertiert, RECHNEN aber dennoch mit Komma tut, d.h. die Punkte als Text liest und somit bei Berechnungen ignoriert.
Kann es sein, dass es mit der Ländereinstellung zusammenhängt, mit was VBA RECHNET? Aber warum wandelt er dann die Werte in Punkt-Form um, wenn er sowieso in Komma rechnet? Kann man in VBA umstellen, dass er die Werte aus dem Sheet nicht in Punkt-Form umwandelt?
VIELEN DANK, euer Manfred.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Punkt statt Komma -> Falsche Berechnung in VBA
ChrisL
Hi Manfred
Soviel kann ich mal bestätigen. Ein TextBox enthält einen "String" und muss somit erst richtig dimensioniert werden. Wieso CDbl() nicht funktioniert kann ich mir nicht erklären. Benutze zwar eine Ländereinstellung, wo Dezimalstellen sowieso mit Komma getrennt werden, doch dass es daran liegt glaube ich nicht.
Teste mal folgende Mappe...
https://www.herber.de/bbs/user/14547.xls
Enthält im Prinzip nur...
MsgBox CDbl(TextBox1) + CDbl(TextBox2)
Gruss
Chris
AW: Punkt statt Komma -> Falsche Berechnung in VBA
08.12.2004 20:18:31
Manfred
Hallo Chris
Habe leider im Moment keine Möglichkeit, etwas auf engl. Betriebssystem (also dem Problem an sich) zu testen, da ich daheim bin und da alles dt. ist (Problem ist in der Fa.). ABer dein Makro resultiert auf meinem PC zu einem falschen Ergebnis, wenn es eine Addition sein soll (hast leider nirgends geschrieben, was da passiert bzw. passieren sollte mit den Zahlen). Hier tritt selbiges Problem auf, dass die Punkte ignoriert werden.
Danke für dein Bemühen.
Gruß, Manfred.
Anzeige
AW: Punkt statt Komma -> Falsche Berechnung in VBA
ChrisL
Hi Manfred
Versuch mal mit Replace Komma durch Punkt ersetzen. CDbl brauchst du aber in jedem Fall.
Gruss
Chris
AW: Punkt statt Komma -> Falsche Berechnung in VBA
09.12.2004 23:27:08
Manfred
Hallo...
Vielen Dank für eure Bemühungen. Das Problem mit der Replace Funktion ist, dass es dann umgekehrt zu Problemen kommen wird, nämlich, wenn ein Engländer etwa das Makro verwendet und das sollte aber funktionieren.
Warum wandelt VBA eig. die Kommas in Punkte um und erkennt sie dann selbst nicht mehr bzw. erkennt nur Beistriche als Zahlen-Kommas? Das ist sowas von verblödet und macht doch überhautp keinen Sinn.
Kann es sein, dass VBA immer Punkte will, die Berechnung aber entweder mit Punkt oder mit Komma funktioniert und letzteres von der Ländereinstellung abhängt?
Danke, Manfred.
Anzeige
AW: Punkt statt Komma -> Falsche Berechnung in VBA
ChrisL
Hi Manfred
Wenn der Engländer ja sowieso schon Punkte eingibt, dann wird mittels Replace auch nichts ersetzt. Sollte m.E. also funktionieren.
Zur Frage... Warum wandelt VBA eigentlich die Kommas in Punkte etc... Könnte auch fragen, wieso trennen die Deutschen mit Kommas, wenn die restliche Welt Punkte verwendet :-)
Gruss
Chris
AW: Punkt statt Komma -> Falsche Berechnung in VBA
10.12.2004 10:36:16
Manfred
@ ChrisL
Hallo Chris. Ich ersetze ja nicht das Komma durch den Punkt, sondern umgekehrt. Dann stehen Beistrich-Kommas und somit dürfte es schon ein Problem sein bei Engländern, die mit Punkt rechnen.
Nochmal zur Verdeutlichung:
Meine Excel Version unter dem engl. Win XP wandelt zwar für die UserForm alle Beistrich-Kommas in Punkte um , wenn ich sie aus dem Sheet in die Form eintrage (also zum Anzeigen stellt er einen Punkt dar), erkennt in der Form diese Werte beim Auslesen aber dann nur als Text! Das ist ja die Ironie dabei!!!! Er wandelt sich die Werte vom Sheet selbst in die Punkt Form um und danach kennt er es in der VBA-Form nur mehr als Text !!!!
Manfred.
Anzeige
Ursache / Lösung des Problems
10.12.2004 12:07:13
Manfred
Hallo Leute
Jetzt, wo mir einiges klar geworden ist, möchte ich euch darüber informieren, damit ihr euch nicht auch so sehr über diverse Dinge ärgern müßt.
Eines vorweg: es sind immer noch einige Fragen offen und einige Dinge sehr unklar, aber vielleicht helfen euch folgende Erkenntnisse weiter.
1. Ursache
Die Ursache für die verwirrende und unterschiedliche Punkt-Komma Technik in Excel/VBA sind - wie ich richtig vermutet habe - die Regionaleinstellungen. Excel RECHNET unabhängig von der Darstellung immer so, wie die Ländereinstellung ist. Wenn Deutsch eingestellt ist, erkennt Excel den Punkt nur als Text und ignoriert ihn. Wenn Englisch eingestellt ist, kann Excel/VBA mit dem Beistrich nichts anfangen bzw. nicht als Trennzeichen für Nachkommastellen. Jetzt werdet ihr denken: war ja klar. So einfach ist das aber nicht, denn...
2. Problem:
Excel wandelt die Zahlen mit Beistrich-Komma beim Einlesen aus dem Sheet in eine VBA Form immer noch in die Punkt-Form um - WARUM? Die Regionaleinstellungen habe ich schon auf Deutsch gesetzt und Excel rechnet jetzt in VBA auch nur mehr mit Beistrich-Komma Werten korrekt und liest Punkt als Text. Warum um Gottes Willen wandelt Excel dann die korrekten Werte aus dem Sheet immer noch in die Punkt-Form um? Auf nur einem getesteten PC unserer Abteilung passiert es, dass (trotz gleichem OS, gleichen Excel Settings, etc. wie auf anderen PCs) die Werte 1:1 in die VBA Form übernommen werden (also mit Beistrich-Komma). Komisch, nicht?
3. Lösung:
Jetzt, wo klar war, dass Excel (aufgrund der bereits deutschen Einstellung bei der Region) Beistrich-Komma benötigt, um korrekt zu kalkulieren, aber in der VBA Form aufgrund der autom. Umwandlung Punkt-Werte standen, blieb mir eig. nur mehr die Replace-Funktion als Ausweg, die mir die Punkt-Kommata vor der Verwendung in Beistrich-Kommata umwandelt:
Repalce(textbox, ".", ",")
Mit diesem Wert habe ich dann gerechnet. Der negative Beigeschmack ist halt, dass das Spiel jetzt natürlich nur mehr auf dt. Ländereinstellung funktioniert!
Wenn irgendjemand weiss, warum Excel die Kommas trotz dt. Einstellung immer noch in Punkt umwandelt, sagt mir bitte Bescheid.
ES LEBE DIESES EXCEL FORUM !!!
Vielen Dank, Euer Manfred.
Anzeige
AW: Ursache / Lösung des Problems
ChrisL
Hi Manfred
Sorry, dass ich erst jetzt dazu komme zu antworten. Finde es echt nett von dir die Lösung zu posten, ganz im Sinne des Forums. Eine Idee hatte ich noch. Mit einer If..Then Abfrage die Ländereinstellung abfragen... Application.International(1) und so das Replace gezielt steuern.
Schönes WE
Chris
AW: Ursache / Lösung des Problems
11.12.2004 17:00:47
Manfred
Hallo Chris
Erst einmal Danke für eure zahlreichen Beiträge. Dein Vorschlag mit dem Abprüfen der Ländereinstellung ist nicht schlecht! Werde es gleich umsetzen, weil es wirklich die beste Lösung für mein "Problem" zu sein scheint.
Ich frage mich halt immer noch, wieso auf einem einzigen Firmen-PC (wie alle mit englischem OS) VBA die (deutschen) Beistrich-Komma Werte aus dem Excel Sheet trotz deutscher Ländereinstellung NICHT in die Punkt-Form umgewandelt hat. Muss an irgendeiner anderer Einstellung liegen (womöglich Excel intern), was ich jedoch nicht rausfinden konnte. Vielleicht weiss das auch noch jemand.
Vielen Dank.
Anzeige

182 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige