Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
400to404
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
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Format einer Textbox
Bjoern
Huhu zusammen,
ich habe ein Problem mit einer Userform, das mich fast den letzten Nerv raubt. In der Userform befinden sich etliche Controls, unter anderem viele Textboxes, die mit einem Tabellenblatt über die controlsource-Eigenschaft verbunden sind.
In die Textboxen sollen Zahlen für Euro-Beträge eingegeben werden können. Um das Format der Eigabe auf #.###,00 zu setzen, wird der value einer jeweiligen Textbox "beforeUpdate" auf Format(textbox.value,"#.###,00") gesetzt.
So weit, so gut. Leider kommt es aber aufgrund der weiteren Zugriff der UF auf das Tabellenblatt immer wieder vor, dass Excel bestimmte Felder im Tabellenblatt "irrtümlich" als geändert ansieht und daraufhin den Wert im vermeintlich geänderten Feld neu in die Textbox der Userform lädt. Da die Textbox kein eigenes Format hat, geht auf diese Weise die Beitragsformatioerung wieder verloren.
Beispiel: In einer Zelle in der Excel-Tabelle steht nach der Eingabe über die Userform die Zahl 1.500,00. In der zugehörigen Textbos steht zunächst derselbe Wert, da beim Verlassen der Textbox bei BeforeUpdate dem Wert der Textbox dieses Format zugewiesen wurde. Bei Eingaben in anderen Textboxen wähnt Excel die Zelle im tabellenblatt mit dem Wert 1.500,00 als geändert und lädt den Wert solchermaßen neu in die Userform. Dabei wird aus 1.500,00 wieder 1500.
Ähnlich ergeht es mit anderen Formatierungen. Kann man das irgendwie abstellen? Kann man irgendwie ein originäres Textbox-Format festlegen? Ich wollte schon per Change-Ereignis das Format festlegen. Aber das funktiobiert nicht, weil jede Veränderung dann die Formatierung auslöst. D.H. aus der ersten Ziffer einer größeren Zahl wird bereits eine Zahl mit zwei dezimalen generiert (so läßt suich also nie 10,00 eingeben, es wird immer 1,00).
Vielleicht kennt jemand das Problem und hat eine Idee. Dafür wäre ich sehr dankbar.
Viele Grüsse
Bjöern

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Format einer Textbox
Axel
Hallo,
elegante Lösungen gibt es adhoc leider nicht.
Die Professional-Version von Visual Basic (nicht VBA) bietet ein Steuerelement namens MaskEdBox, mit der sich Masken für die Ein-/Ausgabe festlegen lassen. Dies wäre hier ideal.
Es gibt aber auch VBA-Lösungsansätze.
Du könntest z.B. das Calculate()-Ereignis des Blattes mit den Referenzzellen für eine Aktualisierung der Textboxen nutzen. Je nach Anzahl belegter Zellen bzw. Häufigkeit von Neuberechnungen wäre das aber ggf. ein Schiessen mit Kanonen auf Spatzen.
Ein besserer Ansatz wäre folgender:
Setze bzw. Lösche in den Enter() respektive Exit()-Ereignissen ein Flag, so dass du informiert bist, ob eine Textbox gerade manuell bedient wird.
In den Change()-Ereignissen kannst du dann das Format ändern, wenn das Flag nicht gesetzt ist.
Gruß
Axel
Anzeige
AW: Format einer Textbox
Bjoern
Huhu Axel,
Danke für Deine kompetente AW! Immerhin beruhigend, zu erfahren, dass es sich um bekanntes Problem handelt :-). Die Idee mit einem Boolean gefällt mir an sich sehr gut. Sie pa0t auch z.T auf mein Problem, weil in meiner UF tatsächlich auch change-Ereignisse stehen, die unerwünscht durch die Tabellenänderung ausgelöst werden. Allerdings - wenn ich Deinen Ansatz denn richtig verstanden habe - hilft er nicht gegen das Problem der Formatänderung des Values in der Textbox. Denn das neu Einlesen des in der xl-Tabelle stehenden wertes wird ja nicht durch das change-ereignis in der Textbox ausgelöst, sondern durch die Control-source-Bindung der Textbox an das Tabellenblatt :-(. Man müßte also dieses Neueinlesen irgendwie abstellen.
Vielen Dank jedenfalls für deinen Lösungsansatz!
Viele Grüsse
Björn
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige