Excel 2013 VBA Grundkurs

Property-Prozeduren erstellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Property-Prozeduren werden oft paarweise erstellt, damit sie lesend und schreibend arbeiten können. Fehlt eine der beiden Varianten, steuern Sie, wie bei den integrierten Properties, ob auf die Werte nur schreibend oder nur lesend zugegriffen werden kann.

Transkript

Die dritte Variante, um Prozeduren zu schreiben, sind Properties. Die auf den ersten Blick so ganz harmlos wirken, aber ich möchte Ihnen im Vergleich zeigen, wie das nicht nur, ich sage mal, die Schönheit des Codes verbessert... Das interessiert Sie möglicherweise erstmal noch nicht. Bei großen Programmen ist es schon sehr wichtig, dass man sich zurechtfindet. ...sondern auch das Verständnis des Codes. Es ist ein ganz banales Beispiel. Ich brauche eine Farbe, ein Farbname, sagen wir mal, As String. Der wird im Datentyp String gespeichert und eigentlich hier nur verwaltet. Das wird später mal, wenn Sie mit Klassen zu tun haben, so eine typische Angelegenheit sein. Nach innen hin gibt es eine Private, nämlich nur Modul-öffentlich sichtbare Variable. Und nach außen hin gibt es Prozeduren, die es erlauben diesen Wert zu setzen, oder eben nicht. Und der Normalfall mit Prozeduren wäre eine Sub FarbeSetzen. Und die kriegt einen Parameter strFarbname, z.B As String. Und darin passiert im Grunde nichts anderes, als dass dieser internen Variablen, der Modul-öffentlichen, dieser strFarbname zugewiesen wird. Das ist so ein Klassiker. Das ist die Prozedur, um innerhalb dieses Moduls diesen Farbnamen zu setzen. Und das Gegenstück, um den zu lesen, heißt FarbeLesen, keine Parameter. Aber ein Rückgabewert, nehme ich genau den Inhalt. Und dann haben Sie sowas wie FarbeLesen ist gleich m_strFarbe. Und von irgendwo anders aus wird das dann aufgerufen. Ich mache das jetzt hier im gleichen Modul, damit Sie sehen, wie das aussehe, als Test. Zuerst setzen Sie die Farbe. Also, völlig beliebiger Farbname. Wenn Sie die später irgendwie (ich sage mal mit Debug.Print) anzeigen wollen, dann brauchen Sie die Function, die ich deswegen mal entsprechend kennzeichne. Mit Strg + G werde ich den Direktbereich anzeigen, das ganze speichern. Es braucht also eine Prozedur zum Setzen, eine anders benannte Function zum Lesen und eine Schreibweise, die sagt: Prozedurname, Leerzeichen, neuer Inhalt, und Debug.Print Function, Funktionsname. Wenn ich das jetzt hier ausführe, wird nichts Spektakuläres passieren. Da unten steht jetzt "Himmelblau" - hier reingeschrieben, da ausgelesen. Man sieht es leider nicht im Code, dass hier die gleiche Farbe gesetzt und gelesen wird. Denn es kann weder gleichnamig sein, noch sieht man das Setzten überhaupt. Jetzt im Vergleich (ich muss das mal ein bisschen zusammenschieben und das davor machen, damit wir es auch komplett immer sehen) eine Property. Properties treten typischerweise in Pärchen auf, sowie Sub und Function hier, die typischerweise nicht so pärchenweise sind. Und da die ein Tick komplizierter zu schreiben sind... (Beim dritten Mal nicht mehr, am Anfang - schon). ...würde ich empfehlen die einmal, sozusagen, offiziell einzufügen, nämlich mit Einfügen Prozedur. Das geht, wie Sie sehen, für Sub und Function auch, ist aber ehrlich gesagt albern. Aber für eine Property, die diesen Namen kriegt, und zwar zweimal den gleichen. Den Rest können wir lassen, das machen wir sowieso anschließend neu. Und dann nach dem OK zwei neue Prozeduren erzeugt. Und ein bisschen Leerraum, den wir wegnehmen können. Da unten hat er die hingesetzt. Ich will die aber oben haben. Also... Das sind die beiden Neuen. Das Public können Sie schlicht weglassen. Properties sind genauso wie Sub und Functions immer Public. Sie müssten andersherum was dagegen tun, nämlich mit Private. Also, ist das schlicht überflüssig, hätte nicht weh getan, aber nur damit Sie nicht verwirrt werden. Properties bestehen immer aus zwei Schlüsselwörtern. Sie müssen immer sagen: Property Get und Property Let, oder ganz selten Property Set. Aber dieses Pärchen ist das Typische. Und Property Get ist die Function. Das schreibe ich schon mal dahinter. Und ändere deswegen auch direkt die Reihenfolge, damit es wie unten in gleicher Reihenfolge ist. Und die Property Let entspricht einer Sub. Und jetzt können wir das machen, was da unten auch passiert, den Parameter nehmen und übergeben. Der ist häufig unbrauchbar. Der wird immer so benannt, wie hier. Variant NewValue - das ist sowas von nichts sagend. Da können wir also wenigstens wahr Farbe reinschreiben, oder ganz ehrlich strFarbname, und dann auch hier As String. Sobald Sie das machen, müssen Sie diesen Datentyp auch ändern. Eine Let und ein Get können nur den gleichen Datentyp benutzen, der also beim Let im letzten Parameter steckt. Es können ja auch mehrere sein, der Letzte zählt. Wenn der ein String hat, muss auch der Rückgabeparameter von dem Get ein String sein, sonst würde das vom Compiler auch direkt angemeckert. Das ByVal ist auch überflüssig. In diesem Fall nehme ich es einfach deswegen weg, damit die sich gleicher sind. ByVal heißt, es wird tatsächlich der Inhalt der Variablen, des Arguments, übergeben. Im Gegensatz zu ByRef, das Sie es mal auch gesehen haben. By Reference heißt, es wird nur ein Hinweis gegeben, wo der Inhalt steht. Damit ist er veränderlich, ByVal lässt ihn unveränderlich. Ist im Moment uninteressant, können wir also weglassen. Und hier kann ich jetzt ganz schlicht rauskopieren aus dem Sub. Die machen das Gleiche. Und auch die Function und die Get Property machen das Gleiche. Allerdings, ist der Rückgabewert der Get Property natürlich ihr Name und die heißt nur Farbe. Das ist ja das Wesentliche, dass ich die Property mit gleichen Bezeichnung haben darf. Und jetzt kommt diese Prozedur hier. Die werde ich auch noch mal nach oben kopieren, mit gedrückter Steuerungstaste an dem blauen Block ziehen. Und das soweit verändern, dass es mit den Properties funktioniert. Die heißt nämlich Farbe. Und eine Let-Property wird so geschrieben, das wirkt so ein bisschen wie eine Variable. Farbe ist gleich "Himmelblau". Und die Andere können Sie entsprechend so schreiben. Sie können auch die Klammern dahinter setzen, aber so wird es noch deutlicher. Die, in Einführungszeichen Variable Farbe, kriegt einen neuen Wert. Und die, in Einführungszeichen Variable Farbe, wird hier gedruckt. Wir sollten noch prüfen, dass es funktioniert. Ich nehme eine andere Farbe, damit Sie es deutlich sehen, dass der benutzt wird. Also, mit F5. Das ist natürlich richtig, der Compiler beschwert sich, dass ich da einen gleichen Namen benutzt habe. Also, neuer Anlauf. Und da sehen Sie "Ferkelrosa". Also, funktional ist es das Gleiche. Der Vorteil ist, dass Sie wirklich schreiben dürfen: Farbe gleich neuer Wert. Und müssen nicht eine Prozedur benutzen, eine Sub, bei der nicht erkennbar ist, dass hier ein Wert zugewiesen ist. Und mindestens so wichtig, Sie dürfen beim Auslesen die gleiche Bezeichnung benutzen. Das ist das, was Sie immer und überall in VBA sehen werden. Sie schreiben in ein Wert rein und Sie lesen ihn unter der gleichen Bezeichnung wieder aus. Und das ist das, was Properties ausmacht, die deswegen typischerweise im Pärchen auftreten, im gleichnamigen Pärchen - Property Let und Property Get. Falls Sie übrigens mal einen Wert nur lesbar, aber nicht schreibbar machen wollen, dann lassen Sie einfach diese hier weg. Damit ist ein "Farbe" gleich neuer Wert - nicht zulässig, weil es die Property Let nicht gibt. Oder falls ein Wert zwar gesetzt werden darf, aber nicht wieder ausgelesen, dann lassen Sie die andere Property weg. Also, das lässt sich wunderbar steuern, ohne dass man da besondere Klimmzüge machen muss.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 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!