Hallo,
deinen Frust mit Objekten in VBA kann ich nachvollziehen, aber dein Vergleich von objektorientierten Programmiersprachen mit VBA ist nicht sinnvoll. VBA ist nun mal keine "echte" objektorientierte Sprache und die Objektorientierung in OOP wurde nur unvollständig implementiert. Solche Vergleiche sind daher nicht zielführend. Die Syntax wurde in weiten Teilen dadurch beeinflusst, dass sich die VBA-Sprache an den Möglichkeiten des COM-Systems orientiert und angelehnt hat. Unter allen Möglichkeiten, die die OOP bietet, ist im Prinzip nur eine eingeschränkte Variante von Polymorphismus übrig geblieben. Also gibt es keine Vererbung, keine abstrakten oder anonymen Klassen und so weiter.
Des weiteren ist das Prinzip in VBA, daß man oft Objekte einer Anwendung nicht einfach instanziieren kann, sondern sie sind sehr oft "public, not createable", soll heißen, man fügt einer übergeordneten Auflistung per Add-Methode ein neues Objekt hinzu und dabei wird eine Referenz auf dieses "neu erzeugte" Objekt zurückgegeben, quasi als würde man ein Factory-Pattern verwenden. Dieses Paradigma zieht sich durch alle Office Objektmodelle.
Da die Sprachen VB6 und VBA weitestgehend identisch sind, kannst du für Hintergrundimformationen auch in der VB6 Literatur nachschauen, die, weil VB6/VBA aber schon sehr alt ist, meistens leider nicht mehr verfügbar sind, z.B. "Microsoft Visual Basic Design Patterns von William Stamatakis", aber immerhin findet man für VB6 und OOP ein paar weiterführende und interessante Artikel zu dem Thema im Internet.
Für den Anfang könnte man z.B. hier einsteigen:
https://morsagmon.com/blog/object-oriented-programming-with-excel-vba-part-1/
|