Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel VBA für Profis: Klassen (Konzepte)

Richtiger oder falscher Aufruf

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Lorenz Hölscher zeigt Ihnen hier die Unterschiede zwischen dem richtigen und einem falschen Aufruf einer Klasse.

Transkript

Ich sehe ganz häufig fehlerhaften Code im Zusammenhang mit dem Aufruf von Klassen, deswegen möchte ich Ihnen zeigen, wie es richtig geht und wo das Problem ist, wenn es falsch gemacht wird. Dazu brauche ich ein klein bisschen Platz, also das hier können wir schon mal weg tun, das war ja sowieso kommentiert und ich schreibe jetzt erstmal diesen falschen Aufruf. Verführerisch ist nämlich diese beiden Zeilen gemeinsam ausführen zu dürfen. Das ist das, was ich häufig sehe, beim "Dim" können wir ruhig wieder "clsX" nennen, das ist ja eine lokale Variable, steht nicht "As Datentyp", sondern "As New clsTest". Beide Zahlen zusammen beim Deklarieren wird sofort initialisiert und das Gefährliche dabei ist, dass Sie dann nicht mehr unterscheiden können, ob die Klasse schon existiert oder nicht. Die Existenz einer Klasse also, ob es diese Instanz schon gibt, fragen Sie mit "Nothing" ab. Es ist ein Objekt, wenn es nicht existiert, können Sie es auf "Nothing" prüfen. Also frage ich "If clsX Is Nothing", Achtung! Das ist ein Objekt Vergleich und nicht ein Gleichheitszeichen mit einer Zahl, also wenn die Klasse "Nothing" ist, dann gibt es sie nicht, ansonsten gibt es sie schon, also schreibe ich ein "debug.Print" und da steht sowas wie sagen, war einfach "Nein", die gibt es nicht und ansonsten "debug.Print "Ja"". Und das kann ich mal einfach erstens speichern, "Debuggen""Kompilieren" und jetzt durchlaufen lassen mit der F5 Taste und Sie sehen erstens, die Klasse ist erzeugt worden und sagt automatisch, dass sie existiert und da wird sie wieder geschlossen. Sie haben also kurz gesagt, gar keine Chance rauszukriegen, ob es diese Klasse gibt und bevor Sie überhaupt reagieren können oder irgendwas machen, ist hier in der Variablendeklaration schon alles ausgeführt worden. Sie werden nie den Test auf "Nein" beantworten können. Ich nehme das nochmal weg hier und jetzt kommt das Gegenstück sozusagen der richtige Aufruf, "Sub RichtigerAufruf", damit Sie nämlich auch prüfen können, ob diese Klasse existiert, das ist schneller geschrieben als kopiert, "Dim clsX As clsTest" und jetzt prüfe ich zuerst mal, das allerdings können wir rüber kopieren, ob diese Klasse existiert, dann erst kommt der zweite Teil mit "Set clsX = New clsTest" und dann frage ich wieder, ob sie existiert, einmal kopiert da, wieder eingefügt und das "End Sub" ist noch da, da schaffe ich noch mal klein bisschen Platz, jetzt kommen nämlich 2 Antworten: Die Erste stellt fest, "Nein, die Klasse existiert noch nicht, die kann ich überhaupt erst untersuchen, denn Sie müssen für Variablen möglicherweise erstmal rauskriegen, ob sie schon initialisiert worden sind und Sie wollen sie nicht unfreiwillig initialisieren, weil so eine Klasse ja relativ groß sein kann. Wenn ich das mit F5 durchlaufen lasse, dann sehen Sie zuerst "Nein", Sie können ehrlich abfragen, ob diese Variable existiert oder nicht und anschließend erst, wenn sie initialisiert worden ist, kriegen Sie raus "Ja", sie ist initialisiert worden, das meldet hier die Klasse zufällig auch selber, aber das macht nur unsere Test-Klasse. Also, wenn Sie ordentlich mit Klassen programmieren, dann vermeiden Sie diese 2 in 1 Zusammenfassung initialisieren und deklarieren gleichzeitig, denn dann können Sie nicht mal rauskriegen, ob es die Klasse schon gibt und das ist manchmal wichtig.

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!