Excel VBA für Profis: Klassen (Konzepte)

Die Implements-Anweisung nutzen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit einer Implements-Anweisung kann schon der Compiler prüfen, ob die ähnlichen Klassen wirklich eine identische Schnittstelle besitzen.

Transkript

Damit ich aus diesen drei fast identischen Prozeduren eine einzige machen kann bei der ich die Klasse nur noch mit "Select case" auswähle und der Rest ja ganz viel identisch ist, muss ich die Klassen umbauen. Ich brauche eine Schnittstelle und das bedeutet zu den drei tatsächlichen konkreten Klassen, gibt es eine vierte abstrakte Klasse. Die beschreibt, wie diese konkreten Klassen aussehen sollen. Da die namentlich sonst sehr weit auseinander stehen, werde ich die jetzt direkt umbenennen. Also hier heißt die nicht "clsAccess", sondern "clsDatenAccess" und entsprechend die csv-Datei auch. Das lässt sich nicht automatisieren, aber das ist schnell geschrieben. Die beginnen also bei mir mit dem Präfix "clsDaten", damit ich sehe, die gehören zusammen. Das ist vor allem wegen der Übersicht. Und das muss man natürlich dann hier auch entsprechend machen. Also ich versuche mal, dass ich dieses Stückchen markiere und mit "Steuerung H" ersetze in " clsDaten" und dann schauen wir mal, ob das überall funktioniert. Da zum Beispiel darf ich es nicht ersetzen. Dort ja. Das ist jetzt Entscheidung, ob das sich lohnt. Eigentlich nicht. Ich glaube ich habe das schneller hier geschrieben: "Daten". Und da gibt es jeweils zwei Stellen, wo ich das ausbessern muss, nur damit es jetzt lauffähig bleibt. Die beiden jeweils ändern sich. Und dann sicherheitshalber noch einmal "DebuggenKompilieren". Das war nur ein reines umbenennen, weil die vierte Klasse jetzt bei mir den Namen "clsDaten" kriegt. Diese Vierte, die Schnittstelle, die ist eine zufällige Kopie von einer von denen. Ich nehme mal "clsDaten", kann jetzt also "Steuerung A" alles kopieren und lege jetzt ein neues, weiterhin Klassenmodul an und da kopiere ich das erst mal einfach mal rein. Das wird meine neue abstrakte Klasse. "clsDaten" heißt die deswegen. Und dann kann ich die immer schön erkennen. "clsDaten" ist die abstrakte und "clsDatenAccess", oder "csv" oder "Excel", ist dann die konkrete. Sonst sind die Namen völlig beliebig. Und die räumt jetzt auf, die schmeißt alle konkreten Sachen raus. So banal, wir behalten nur die öffentlichen Prozeduren mit ihren Signaturen. Und auch das hier ist was konkretes. Diese Klasse beschreibt die öffentlichen Prozeduren der anderen Klassen. Sie werden dort Klassen finden, wie jetzt zum Beispiel bei "Access". Die hat hier eine Prozedur mehr. Die ist aber "private". Die will ich nicht wissen. Also es gilt wirklich nur alles das, was nicht "private" ist und das muss dann bei allen drei Klassen identisch sein und der hier gibt vor, wie das auszusehen hat. Das ist bisher nett und belanglos. Die haben noch nichts miteinander zu tun. Jetzt erkläre ich den anderen Klassen, dass sie sich bitte an diese Regel halten. Und das macht der Implements-Befehl. Also ich mache das hier mal direkt für "Access". Da schreibe ich jetzt vorneweg rein "implements" und dann diese Klasse "clsDaten". Falls ich jetzt versuche das mit "DebuggenKompilieren" zu prüfen, erfahre ich direkt, das sind falsche Namen. Das ist allerdings sehr, sehr irreführend, denn Sie würden hier zurecht einwenden, das steht da doch. "PfadDatei" wird verlangt und "PadDatei" steht da. Und das wird genau nicht verlangt. Ich muss jetzt immer "clsDaten_" davorschreiben. Und zwar zu Fuß, das gibt es nicht automatisiert. Also, wenn ich die drei mal jetzt vereinbare, dann kann ich wieder mit "DebuggenKompilieren" sicherstellen, dass alles richtig steht. Hier ist jetzt allerdings natürlich die falsche Klasse. Die muss jetzt direkt umbauen. Ich muss nämlich jetzt erklären, dass dieses die allgemeine Klasse "clsDaten" wird und die konkrete Ausprägung, dann hier "DatenAccess" ist. Nächstes "DebuggenKompilieren". Da muss ich natürlich auch einfügen, dass die Prozedur umbenannt worden ist. Das ist jetzt einfach sehr viel Fleißarbeit. Gucken wir mal, ob es jetzt fertig ist. Ja! Also alle öffentlichen Prozeduren kriegen bei der Implements-Anweisung den Namen der abstrakten Klasse mit einem Unterstrich. Was übrigens im Nebeneffekt heißt, das kann sehr unangenehm sein, dass Sie in diesem Namen selber keinen Unterstrich benutzen dürfen. Auch nicht den Zweiten oder Dritten, der vielleicht zu erkennen ist. Das funktioniert einfach nicht mehr. Jetzt muss ich überall, nämlich für diese drei Klassen in die öffentlichen Prozeduren genau das einbauen. Also da muss ein "implements clsDaten" davor. Und ab dann muss ich überall, wo dieser Name auftaucht und zwar dann auch hier wieder, das entsprechend davorsetzen. Auch für Excel einmal "implements clsDaten" und hier. Sie merken schon, wenn Sie das das zweite, dritte Mal für die jeweils nächste Klasse machen, dann hat man schon mal sehr schnell gesehen, wo das überall hingehört. Dieses braucht es nicht, weil das "private" ist. Und ab jetzt werde ich natürlich auch genötigt hier die allgemeine Klasse anzugeben und "clsDaten" da entsprechend, so dass ich jetzt mit ein bisschen Glück alles verbessert habe und jetzt scheinbar noch nichts verbessert habe. Es sind immer noch drei Prozeduren, aber wenigstens schon mal hingehen kann, und diese Schnittstelle überprüfen lassen, was jetzt erlaubt ist und was nicht. Wenn ich jetzt also hingehe, beispielsweise bei "clsDaten", "csv" sage. Das brauche ich einfach nicht. Ich kann hie in dieser speziellen Bearbeitungsleiste einfach den ganzen Block auskommentieren und das mit "DebuggenKompilieren" durchführen lasse, dann kriege ich direkt den Hinweis "Das fehlt". Deswegen hatte ich von Anfang an diese Prozedur schon eingebaut. Die muss also existieren auch wenn Sie nichts tut, damit alle drei nach außen hin die gleiche Schnittstelle liefern. Und das ist das, was der Implements-Befehl macht. Der prüft das schon zur Kompilierzeit. Das merken Sie also nicht erst zur Laufzeit, dass was fehlt, sondern Sie kriegen direkt den Hinweis "Diese Klasse ist noch nicht identisch". Und damit ist die Hauptarbeit geschafft.

Excel VBA für Profis: Klassen (Konzepte)

Verbessern Sie Ihren VBA-Code durch Klassenprogrammierung.

1 Std. 35 min (21 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:28.03.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!