Hallo Arne,
Schön, dass du am Ball bleibst. Ich bin schon sehr gespannt auf das Gesamtwerk.
Bei mir funktioniert auch
Dim ufrm As MSForms.UserForm
Das ist sogar noch klarer und besser nachzuvollziehen. Ich verwende Excel 2003.
Wenn du beispielsweise 3 Userforms geladen hast, so zeigt die Count-Eigenschaft eine 3. Diese 3 Userforms kannst du mit den IDs 0 (erste Userform), 1 (zweite Userform und 2 (3. Userform) ansprechen. Das ist oft so in VBA, das x Elemente die IDs 0 bis x-1 haben. Zum Bleistift auch array-Elemente.
Dim array(4) as string kann 5 Zeichenketten aufnehmen.
Das die Userform(0), bis Userform(2) nicht in der Auflistung userforms stehen, finde ich auch nicht logisch. Mr. Gates wird sich schon etwas dabei gedacht haben. Zum Glück hilft hier Google weiter.
Objektvariable können ganzschön viel RAM belegen. Wenn du zB ganze Tabellen in eine Objektvariable lädst. Die Objektvariable wird natürlich beim ornungsgemäßen Beenden der Prozedur sowieso automatisch geleert. Aber du merkst ja selber, wie oft der Code beim Testen hängen bleibt. Dann könnte Müll im RAM zurückbleiben. Deshalb habe ich mir angewöhnt, alle Objektvariablen in meiner Fehlerroutine der Procedur freizugeben. In unseren kleinen Beispielen (die ja keine Fehlerroutine haben) kann man über sie Sinnhaftigkeit streiten. Ich denke: Ordnung muss sein.
Viele Grüße von Heiko
|