Peter Schleif
2009-12-22 09:03:34 UTC
Hallo.
Bei Pearson [1] habe ich gelernt, die Eigenschaft einer Klasse zur
Default-Eigenschaft zu erklären so dass beim Lesen/Schreiben dieser
Eigenschaft der eigentliche Name entfallen darf.
Nun habe ich zwei kleine Klassen geschrieben [2]
KeyCollection
KeyCollectionItem
Diese fügen den Einträgen einer VBA-Collection die fehlende Eigenschaft
.Key hinzu. (Im Prinzip reicht auch die Item-Klasse, aber durch die
Collection-Klasse kann bestehender Code unverändert bleiben – man muss
nur die Deklaration der Collection-Variable anpassen)
Der Pearson-Trick funktioniert mit der .Value-Eigenschaft der
Item-Klasse. Diese hat den Typ Variant. Es funktioniert leider nicht mit
der .Items-Eigenschaft der Collection-Klasse, die eine
Standard-Collection zurück gibt. Get .Items() als solches funktioniert
korrekt - gibt man es explizit an, so wird auch eine korrekte Collection
zurückgeliefert. Aber im Gegensatz zu .Value man kann es nicht weglassen.
Warum?
Geht das nur mit skalaren Typen?
Was mache ich falsch?
Es würde mir auch helfen, wenn jemand bestätigen könnte, das es _nicht_
geht. Dann könnte ich mir die weitere Fehlersuche sparen.
Vielen Dank im Voraus.
Peter
[1] http://www.cpearson.com/excel/DefaultMember.aspx
[2] http://home.arcor.de/peter.schleif/KeyCollection.xls
Bei Pearson [1] habe ich gelernt, die Eigenschaft einer Klasse zur
Default-Eigenschaft zu erklären so dass beim Lesen/Schreiben dieser
Eigenschaft der eigentliche Name entfallen darf.
Nun habe ich zwei kleine Klassen geschrieben [2]
KeyCollection
KeyCollectionItem
Diese fügen den Einträgen einer VBA-Collection die fehlende Eigenschaft
.Key hinzu. (Im Prinzip reicht auch die Item-Klasse, aber durch die
Collection-Klasse kann bestehender Code unverändert bleiben – man muss
nur die Deklaration der Collection-Variable anpassen)
Der Pearson-Trick funktioniert mit der .Value-Eigenschaft der
Item-Klasse. Diese hat den Typ Variant. Es funktioniert leider nicht mit
der .Items-Eigenschaft der Collection-Klasse, die eine
Standard-Collection zurück gibt. Get .Items() als solches funktioniert
korrekt - gibt man es explizit an, so wird auch eine korrekte Collection
zurückgeliefert. Aber im Gegensatz zu .Value man kann es nicht weglassen.
Warum?
Geht das nur mit skalaren Typen?
Was mache ich falsch?
Es würde mir auch helfen, wenn jemand bestätigen könnte, das es _nicht_
geht. Dann könnte ich mir die weitere Fehlersuche sparen.
Vielen Dank im Voraus.
Peter
[1] http://www.cpearson.com/excel/DefaultMember.aspx
[2] http://home.arcor.de/peter.schleif/KeyCollection.xls