Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel VBA für Profis: Klassen (Konzepte)

Klassen zur Laufzeit wechseln

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Es ist bekanntermaßen schlechter Programmierstil, mehrere ganz ähnliche Prozeduren zu schreiben, anstatt diese zusammenzufassen. Sehen Sie in diesem Film, wie Sie vorgehen müssen, damit Ihnen das nicht passiert.

Transkript

Eigentlich sind wir hier mit diesen Prozeduren schon sehr weit. Erstens ist es gut, dass diese drei Prozeduren sich extrem ähneln und zweitens ist das ein Zeichen für schlechte Programmierung. Prozeduren die sich so ähnlich sind, sollten eigentlich mit einer "if"-Struktur, oder wahrscheinlich besser mit einem "Select Case" unterschieden werden können. Denn weite Teile sind völlig gleich. Hier unterscheidet sich nur die Dateiendung. Das ließe sich mit einer einfachen String-Variablen beheben. Der Haken liegt hier oben drin. Dieser Datentyp ist zwingend und wenn ich den variabel machen will, dann geht das so erstmal nicht. Da brauche ich noch ein bisschen Unterstützung. Und diese Unterstützung hat was mit Schnittstellen zu tun. Die gute Nachricht an der Stelle ist schon mal, dass diese Klassen minimalst umgebaut werden müssen, denn die sind nach außen faktisch schon gleich. Wenn ich hier beispielsweise in die Klasse "Excel" reingucke, dann gibt es eine "Let Property PfadDatei", eine Prozedur "DatenOeffnen" und eine "Function" "Datensatz". Und in der "CSV"-Klasse gibt es exakt das gleiche. Eine "Let Property PfadDatei", sogar eine "Sub"-Prozedur "DatenOeffnen", die überhaupt nichts tut und eine "Function" "Datensatz". Und deswegen habe ich die dort eingefügt. Nach außen sind die drei Klassen schon gleich und das wird gleich Voraussetzung sein. Wenn ich hier also austauschen will, einfach an der Stelle dafür sorgen will, dass ich mit einer "Select Case"-Struktur diese drei Prozeduren zu einer zusammenfassen kann, dann muss ich in der Lage sein, diesen Datentyp zu neutralisieren sozusagen. Das wird ein allgemeiner Datentyp. Und da geht es um Schnittstellen. Deswegen müssen wir uns ganz kurz einmal mit Schnittstellen beschäftigen. Schnittstellen finden Sie überall im Alltag, zum Beispiel hier bei Schrauben. Die haben zwar eine Schnittstelle, aber leider nicht die Geiche. Denn wenn Sie jetzt mit so einem Bit ankommen, dann passt das zwar für einige, die so eine Kreuzschlitz-Oberfläche haben, aber hier für diesen Winkel, oder die Sechskantmutter schon nicht mehr. Das ist hier schon ein bisschen besser bei den Bleistiften. Da gibt es passende Schnittstelle, zum Beispiel für den Anspitzer. Der kleine Anspitzer passt wenigstens für diese drei, der Große passt leider doch nicht für den Zimmermannsbleistift. Und ähnlich bei Lampen und Lampenfassungen. Sie können wenigstens hier das "E14"- Gewinde einheitlich in diese Lampe eindrehen. "E27", das große Gewinde würde dann doch nicht passen. Aber die alle haben zumindestens schon mal eine gemeinsame Schnittstelle. Die auch. Das ist also eigentlich was ganz alltägliches und wir werden uns auch bei Klassen mit Schnittstellen beschäftigen. Klassen ohne Schnittstellen sind ungefähr so wie diese Kabel hier. Von denen passen die wenigsten hier in die zugehörige Klasse sozusagen, denn jede Klasse hat andere Prozeduren, sprich, andere Stecker hier. Und damit sind die beim Aufruf, sprich bei der Nutzung nicht austauschbar. Das ist ungefähr so, wie wenn Sie eine Klasse schreiben mit der Prozedur "Test" und in der anderen Klasse wird dieselbe Aufgabe von einer Prozedur "Beispiel" gelöst. Das geht nicht. Das muss schon mal einheitlicher sein. Sie müssen also die Klassen so vereinheitlichen, wie das hier mit Zwischensteckern gemacht werden kann. Sie müssen alle Klassen mit exakt gleichen Prozeduren versehen. Sagen wir genauer, gleichen öffentlichen Prozeduren. Und diese Prozeduren müssen auch die gleichen Signaturen besitzen, wie das heißt. Das bedeutet, wenn die erste Klasse eine Prozedur namens "Test" hat, reicht es nicht, dass die zweite Klasse auch eine Prozedur namens "Test" hat. Die darf nicht plötzlich Parameter besitzen, oder andere Parameter. Das tut es also nicht. Wir brauchen Klassen mit einer Schnittstelle und diese Schnittstelle garantiert einheitliche Prozeduren. Und zwar mit diesem "Implements-Befehl", der prüft diese Einheitlichkeit. Der eigentliche Code wird sich dann so verändern, dass davor "Implements" und eine Klasse steht und alle Prozedurnamen diesen Klassennamen mit einem Unterstrich davor bekommen. Dann kann der "Compiler" schon direkt testen, ob die zugehörigen tatsächlichen Prozeduren identisch sind. Identisch im Namen, identisch in der Signatur, also in den Parametern und vor allem, dass auch keiner fehlt. Das ist dann so, als ob Sie den Stecker hier in drei verschiedene Boxen reinstecken können. Die verhalten sich alle gleich, selbst wenn es dahinter anders aussehen mag.

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...
 

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!