HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
2010
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Ulf
10.05.2026 21:37:59
AW: Controls mit Events in Collections verwalten
Hi,
Die Klasse muss auch clsTextBox heißen, i forgot. Die Konstanten mRows und mCols bestimmen die Anzahl der feuernden Events ((r*c)-1, da 0-basiert) und sind dynamisch.
Wenn du beim Erstellen den .Tag des Textfeldes um die Feldnamen zuzuweisen , kann man im Event mit .Tag=Feldname fallunterscheiden.
Genauso vorstellbar wäre die Ordinalzahl des Feldes zu nutzen usw
Die Zuweisungen
...
Set t(lngTnr) = New clsTextbox
With newControl
Set t(lngTnr).TxtBox = newControl
...
erzeugen eine leere Klasse und weisen die Textbox darin dem Control auf der Userform zu, dass muss so.
Innerhalb der Klasse kannst du alle Events einer Textbox verwenden.
Im Anhang der Anscheinsbeweis
https://www.herber.de/bbs/user/180699.xlsm
hth
Ulf
Als Antwort auf diesen Beitrag
Sumbu
10.05.2026 18:36:20
AW: Controls mit Events in Collections verwalten
Hallo Ulf, hallo Case,

wir nähern uns der Lösung, aber so ganz klappt das noch nicht. Einfach für jede Textbox einen Public With Events Eintrag zu erstellen greift zu kurz, weil die Anzahl der Textboxen tatsächlich dynamisch ist. Dasselbe gilt auch für Select Case, aber Ulf, in deinem Sub finde ich den Ansatz gut nur ein Public With Events zu verwenden und im Sub zu bestimmen welche Textbox grade feuert. Das kann man über das Array lngTnr() bestimmen, oder über den Namen der Textbox, der im Sub fillTbGrid so erzeugt wird:

"Tb" & CStr(X) & "-" & CStr(Y)



Es gibt jedoch noch ein weiteres Problem: der Event springt nicht an, egal wie oft ich eine Taste drücke und wieder loslasse. Ich verstehe auch noch nicht ganz wieso der Event anspringen sollte. Kann man die Textboxen nicht irgendwie Bei Public With Events adden? Ich erinnere mich dunkel, dass es so eine Möglichkeit gab. Naja ist auch wirklich schon 10 Jahre her, dass ich mich mit der Problematik befasst habe.

Vielen Dank jedenfalls erstmal, vlt fällt euch ja noch etwas ein.

Grüße
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.