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)

Test-Klasse erstellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Eine erste Test-Klasse ohne ernsthafte Funktionalität verdeutlicht den grundsätzlichen Aufbau und die Struktur einer Klasse.

Transkript

Ich habe hier jetzt schon eine Datei vorbereitet, die ist praktisch leer. Das wichtigste daran ist, dass es eine Excel-Datei im "xlsm"-Format ist , also makrofähig. Und hier in den Tabellen passiert sowieso nichts, ich kann jetzt also mit "Alt+F11" in den VBA-Editor gehen, der wechselt entweder, oder wird dann geöffnet, und Sie sehen hier es gibt eine einzige Tabelle, die brauchen wir sowieso nicht, und es gibt sogar schon ein praktisch leeres Modul, das lege ich immer an für so eine Konstante. Das ist hier eine "public-constant", die Datei weit gilt in allen Modulen, deswegen kennzeichne ich die mit so einem "p_". Das ist eine Kontante, es sehe ich dann an diesen Teil des Namens mit dem "c" und das es ein String ist sehe ich daran. Die brauchen wir im Moment noch nicht, aber alles was so generell zu deklarieren ist, steht bei mir in diesem Modul "modVarKonstDLL", nämlich "Variablen", "Konstanten" alle bei public, und falls es dann nötig wäre "DLLs". Das ist im Moment alles uninteressant, sie können das also als eine praktisch leere Datei betrachten. Es beginnt mit dem "Einfügen" und das ist schon der wesentliche Unterschied. Ich füge nicht, wie sonst vielleicht schon mal gemacht, ein Modul ein, sondern ein Klassenmodul. Das war's schon. Das ist der wesentliche Unterschied, diese Klasse hat eine interne Kennzeichnung, aber Sie sieht genauso aus, wie jedes andere Modul. Die können wir schon mal ordentlich benennen. Klassen benenne ich mit "cls" für "Class", also hier reinklicken "clsTest", ist ein wunderbarer Name, und sobald ich das mit Return bestätige, steht das auch da oben. Sie kommen also in eine andere Gruppe, es sei Sie schalten das hier oben, das finde ich aber unübersichtlich, ich lasse die lieber so, in den Gruppen dann sieht man auch direkt Klassenmodul. Ich sehe sowieso an diesem Namen, aber vielleicht handhaben Sie das anders. Außerdem möchte ich direkt einstellen, dass hier unter den EXTRAS "Optionen", die "Variablendeklaration" erforderlich ist. Dafür schalte ich die "Automatische Syntaxüberprüfung" aus. Die überprüft jetzt trotzdem, die nervt nur nicht mit dem MessageBox, also diese beiden Änderungen mache ich einmalig in einem neu installierten Excel. Nach dem "OK" muss ich jetzt hier "Option Explicit" nochmal nachtragen. Das wurde nämlich diese zweite Eigenschaft hier "Variablendeklaration erforderlich" für neue Module machen. Dieses ist aber nicht neue, das gab schon. Damit bin ich jetzt arbeitsfähig und ich kann jetzt hier in diesem Modul eine beliebige Prozedur schreiben, zum Beispiel "Sub SagHallo". Die macht nichts anderes, als "Hallo!" zu sagen, nämlich mit einer MessageBox. Und das war's schon. Das ist eine Prozedur, die Sie in jedem anderen Modul auch hätten schreiben können. Zusätzlich will ich noch eine Function schreiben, die meldet zurück, wie dieses Modul heißt. Dabei ist es egal ob es ein Klassenmodul ist oder Normales, und damit ich das innerhalb des Moduls überall nutzen kann, erfinde ich jetzt eine modulöffentliche Constant, die also kein public hat, sondern "const", und da Sie vor den Prozeduren steht, ist im Modul öffentlicht, deswegen kennzeichne ich das mit einem "m_" "c" für Konstante, "str" für String, und dann kommt eigentlich der "Name" und die bezeichne ich als "Test-Klasse". Weil jetzt hier dieser Trennstrich, das so ein bisschen unschön abschneidet und man diesen Unterstrich nicht mehr sieht, mache ich hier ein Kommentarzeichen. Und die "function" in dieser Klasse macht nichts anderes, als "MeinName" zurückzugeben. Und weil es ein Function ist, sollte sie ordentlich Rückgabedatentyp haben, und dann schreibe ich, wie in jeder anderen Function, den Namen, den ich jetzt mit "Strg+Leertaste" vervollständigen lasse. Mit der Tab-Taste habe ich das ausgewählt, was da eher schon steht und kann jetzt mit "m_" und wiederum "Strg+Leertaste" diesen konstanten Inhalt einfach zurückgeben. Diese beiden Prozeduren, hier die "Sub" und die "Function" tun nichts so zu sagen, die zeigen nur, dass es funktioniert, und an dieser Stelle könnten Sie diesen Code überhaupt nicht von einem normalen Modul unterscheiden. Jetzt kommen aber zwei neuen Prozeduren dazu, die kann man oben hinschreiben oder unten, ist völlig egal. Die hole ich hier oben ab und dort gibt es ein neuen Antrag "Class". Sobald ich den anklicke, wird in der rechten Liste hier auch etwas ausgewählt. Das ist zufällig "Class_Initialize", was ich sowieso haben wollte, aber da steht noch ein zweiter drin, nämlich "Class_Terminate", den ich auch brauche. wo die hier in der Reihenfolge stehen, ist wurscht, aber inhaltlich wird diese Prozedur automatisch aufgerufen, sobald jemand diese Klasse mit "New" initialisiert, "Class_Initialize" eben. Und sobald die Klasse beendet wird, wird automatisch diese Prozedur aufgerufen Das gibt es in normalen Modulen nicht. Und ich schreibe jetzt, das ändere ich da oben auch mal eben, lieber ein "debug.Print", damit es in diesem Debug-Fenster, was Sie auch mit ANSICHT/"Direktfenster" hier kriegen, in der schönen Reihenfolge angezeigt wird, ohne das ich da an MessageBox bestätigen muss. Und der macht also auch nichts anderes als "debug.Print". Und "Ich wurde initialisiert", und da kann ich noch dazu sagen wer ich bin. Dafür habe ich diese Konstante und da schreibe ich dann entsprechend, dass diese Klasse jetzt mit "Terminate" beendet wurde, das heißt, in Aachener Dialekt "tschö, wa!", also kann ich das genau hier formulieren, und das sagt ebenso dieser Klassenname. Und dann geht es nur darum, die Sachen entsprechend aufzurufen. Die Klasse selber ist fertig. Der hat normale Prozeduren und diese speziellen, und wartet jetzt darauf, dass sie initialisiert wird.

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!