Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1012to1016
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
Inhaltsverzeichnis

Problem mit UserForm + Klassenmodul

Problem mit UserForm + Klassenmodul
11.10.2008 04:24:39
Jens
Liebe Forums-Experten,
ich versuche, auf einer UserForm 2 Textboxes + dazugehörige SpinBoxes über ein Klassenmodul zu programmieren.
Auf www.excel-vba.de/userform.htm#Datumdrehfeld gibt es ein Beispiel, wie es ohne Klassenmodul geht. Hab es probiert, macht genau das, was es soll. [Hab bei mir aber Datums-String "dd.mm.yyyy" durch "JJJJ-MM-TT" ersetzt.]
Jetzt wollte ich also einen Schritt weitergehen und den Code in ein Klassenmodul bringen. Meinen Versuch findet ihr in der upgeloadeten Datei: https://www.herber.de/bbs/user/55957.xls
Meine Probleme damit:
* Ich krieg in mySpinbutton_Change den Fehler 13: 'Typen unverträglich'
* Das Event myTextBox_Exit wird gar nicht erst aufgerufen...
Bin euch sehr dankbar, wenn mir jemand bei der Lösung behilflich ist.
Vielen Dank!
der Jens

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit UserForm + Klassenmodul
11.10.2008 09:22:58
Nepumuk
Hallo Jens,
1. Das ist doch Unsinn:
Private Sub mySpinButton_Change()
    'Textboxwert wird auf das neue Datum gesetzt
    mySpinButton.Value = Format(mySpinButton.Value, "DD-MM-YYYY")
End Sub

Der Spinnbutton soll doch keinen neuen Wert bekommen, noch dazu im Datumsformat (daher auch der Fehler, denn Die Format-Funktion liefert einen String zurück), sondern die Textbox.
2. Das geht zwar: Format(mySpinButton.Value, "DD-MM-YYYY") Aber die Funktion erwartet für das Datumsformat eigentlich Kleinbuchstaben. MM wird normalerweise für Minuten benutzt. Bei dir muss die Funktion erst mal "überlegen" :-) was es mit den Minuten zwischen Tag und Jahr auf sich haben könnte, um dann nach kurzer Bedenkzeit doch korrekterweise Monate auszugeben.
3. Du kannst doch nicht einfach Events erfinden. Wenn du dir nicht sicher bist, dann wähle in der linken Combobox über dem Codefenster das Objekt aus. In der rechten Combobox bekommst du dann alle möglichen Events angeboten. Wenn du das gewünschten nicht findest, dann gibt es das nicht. Und es macht, wie du siehst, auch keinen Sinn es trotzdem in das Modul zu schreiben, das springt nie an.
Gruß
Nepumuk
Anzeige
AW: Problem mit UserForm + Klassenmodul
11.10.2008 15:32:29
Jens
Hi Nepumuk,
vielen Dank für deine Hilfe!
ad 1. und 2.:
Tja, wer richtig abschreiben kann, ist klar im Vorteil! :-) Mit richtigem Datumsformat hätte es natürlich heißen sollen:
myTextBox.Value = Format(mySpinButton.Value, "dd-mm-yyyy")
ad 3.:
Im Beispiel auf www.excel-vba.de/userform.htm#Datumdrehfeld wurde TextBox_Exit verwendet und ich hatte dieses Event ungeprüft für das Klassenmodul übernommen. In dem Sinn war das Event nicht völlig erfunden (funktioniert ja auch im Codeteil einer Userform), aber im Klassenmodul funktioniert's dann leider nicht mehr.
Schade, weil der Code außerhalb des Klassenmoduls richtig gut funktioniert hatte...
Was ich tun möchte ist ja, die Eingabe der TextBox zu kontrollieren, wenn diese verlassen wird - daher hätte _Exit gut gepasst. Nun gibt's das Event im Klassenmodul aber nicht. Hast du einen Vorschlag, wie ich das, was der Code tun sollte, mit den Events hinkriegen könnte, die im Klassenmodul verfügbar sind?
Ich denke mir, dass das Problem nicht ganz neu ist; hab zwar ausgiebig gegoogelt, aber nichts Passendes gefunden... Kennst du vielleicht eine Website mit entsprechenden gut funktionierenden Vorlagen für solche Klassenmodule, mit denen man das Verhalten von MSForms-Elementen auf Userforms kontrollieren kann?
Vielen Dank,
der Jens
Anzeige
AW: Problem mit UserForm + Klassenmodul
11.10.2008 16:08:00
Nepumuk
Hallo Jens,
sperr doch einfach die Textbox (Locked - Property), dann kann nichts falsches eingegeben werden und die ganze Prüfung entfällt. Ich würde dann allerdings ein Label benutzen, damit es nicht so aussieht, als könnte man da etwas eingeben.
Gruß
Nepumuk
AW: Problem mit UserForm + Klassenmodul
11.10.2008 16:39:00
Jens
Hallo Nepumuk,
na ja, die Datumseingabe ist nur ein Beispiel. In anderen Textboxes sollen Zahlen eingegeben werden, die z.B. nach oben und unten begrenzt und mit 2 Kommastellen angezeigt werden sollen. Also muss die Prüfung des in der Textbox eingegebenen Strings jedenfalls irgendwo passieren (hier hilft mir ein Spinbutton nicht); und zwar erst bei Verlassen der Textbox.
Vor dem Problem, die Eingabe von vielen gleichartigen Textboxes zu kontrollieren, sind ja sicher auch schon viele andere gestanden. Gibt's irgendwo sowas wie 'Musterlösungen', wenn möglich unter Verwendung von Klassenmodulen? Hab durch googlen nichts Brauchbares gefunden; bzw. der Code, den ich gefunden habe, funktioniert wunderbar, aber nicht in einem Klassenmodul. Wär dir für ein Beispiel oder einen Tipp sehr dankbar.
Lieben Gruß,
der Jens
Anzeige
AW: Problem mit UserForm + Klassenmodul
11.10.2008 18:13:00
Nepumuk
Hallo Jens,
benutze das "KeyPress" - Event um Eingaben just in time zu prüfen. Da kannst du bei der Eingabe z.B. eines Datums verhindern, dass der User Unsinn anstellt. Wenn die erste eingegebene Zahl eine drei ist, dann kann dahinter nur eine 0 oder 1 oder ein Punkt kommen. Wenn die ersten beiden Zahlen 31 sind, kann beim Monat nur noch 1, 3, 5, 7, 8, 10, und 12 kommen usw. Ist zwar ein bisschen Aufwand, aber in einer Klasse machst du das ja nur einmal.
Gruß
Nepumuk
AW: Problem mit UserForm + Klassenmodul
14.10.2008 02:40:38
Jens
hallo nepumuk,
danke für deinen vorschlag.
insgesamt nicht wirklich das, was ich suchte. irgendwie ist mir nicht ganz klar, warum es das exit-event einer textbox in einem klassenmodul nicht gibt. wäre ja praktisch: sobald ein anderes element den fokus bekommt, wird der inhalt meines elements geprüft... nur geht das eben nicht, und man muss entweder jede tasteneingabe prüfen, oder jedes element nachträglich bei drücken der ok-taste...
wenn jemand (nicht nur nepumpuk :-) eine gute sammlung von guten klassenmodulen für häufige aufgaben von msforms-elementen in userforms hat bzw. im internet kennt, wäre mir sehr geholfen!
grüße,
der jens
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige