Excel 2016 VBA Grundkurs

Sub-Prozeduren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Sollen in Ihrem Programm-Code mehrere Aktionen ausgeführt werden, fassen Sie diese am besten in kleinen Unterprogrammen zusammen. Von deren englischer Bezeichnung sub-procedure für Unterprogramm leitet sich das Schlüsselwort Sub ab.

Transkript

Auch wenn Prozeduren sehr einfach zu erstellen sind, möchte ich Ihnen doch hier einen kleinen Überblick von deren Möglichkeiten geben. Erstmal ganz banal, wie schon ein paar Mal gemacht, mit sub im Schlüsselwort und dann einen selbsterfundenen Namen. Zum Beispiel, nennen wir die einfach TestProzedur. Sobald Sie das mit Return bestätigen, kommen da die Parameterklammern, auch wenn da keine Parameter drinnen sind und das End-sub. Innerhalb der Prozedur rücke ich immer ein, es gibt Kollegen, die das nicht machen, ich finde es so übersichtlicher, weil man dann immer sub und End-sub auf einen Blick sieht. Was da drinnen passiert, ist relativ egal. Ich mache hier mal ein ganz banales Hallo, was dann unten im Direktbereich erscheinen soll. Dann tut die was, aber macht keine Messagebox, die man immer bestätigen muss. Wenn ich jetzt eine zweite Prozedur schreibe, sub, die nenne ich mal AufrufEinerProzedur und dort beliebig viele Aktionen machen kann, die Tatsache, dass ich jetzt zu Testzwecken immer nur eine Zeile schreibe, heißt ja nicht, dass das beschränkt ist, also erste Aktion... Hier geht es los. Und meinetwegen die letzte Aktion... Das war es. Dann möchte ich dazwischen jetzt eine eigene Prozedur aufrufen, die Sie oberhalb schon sehen. Wie machen wir das? Ganz einfach, wie jede andere auch. debug. Print ist eine Prozedur und meine ist eine Prozedur, also schreibe ich einfach Test, drücke Steuerung und Leertaste und weil es verschiedene gleichnamige, ähnlich namige gibt, muss ich sie auswählen. An dem, ich nenne es mal, fliegenden Backstein-Symbol davor kann ich sehen, es ist eine Aktion, eine Prozedur. Im Gegensatz zu da unten, zum Beispiel, das ist eine Eigenschaft, in diesem Fall ist es der Rückgabewert eines Objektes. Also meine Prozeduren, meine sub Prozeduren, kann ich immer hier an diesem Backstein erkennen und erst wenn ich es ausgewählt habe, gehe ich mit Tab-Taste in die richtigen Namen. Ich kann also eine eigene Prozedur so aufrufen, wie jede andere integrierte auch. Und nur damit wir sicherstellen, dass es auch funktioniert, wenn ich das jetzt ausführe, stehen die drei Sachen untereinander. Hier das debug. Print, wo es los geht, meine Prozedur, was auch nur ein debug. Print macht und dahinter wieder der andere Befehl. Wenn die Prozedur nicht in diesem Modul ist und Sie nicht genau wissen, welche Sie meinen, aber Sie wissen in welchem Modul sie steht, dann können Sie das auch gezielt aufrufen. Ich nehme mal ein völlig beliebiges modStartwerte mit Steuerung und Leertaste und nach dem Punkt sehe ich alle öffentlichen Prozeduren, die darin enthalten sind. Hier ist es zwar nur eine einzige, aber ich könnte die jetzt genauso aufrufen. Das funktioniert auch mit meiner eigenen Prozedur, also ich kann jetzt auch hier modSub Punkt schreiben und dann sehe Sie, beide Prozeduren werden hier angeboten. Das ist die Alternative, zum Beispiel, indem Sie hier zusätzlich noch den Name des Moduls angeben. Das ist normalerweise nicht nötig, sonder erst dann, wenn Sie in mehreren Modulen gleichnamige Prozeduren haben. Das haben Sie normalerweise nicht. Ich sorge dafür, dass solche, ich nenne sie mal freie Prozeduren immer eindeutig sind im Namen. Es gibt aber Module, Zum Beispiel Formulare, die überall immer wieder so was, wie form_initalize oder so was immer wieder die gleichen internen Prozeduren haben. Und wenn Sie die gezielt angeben wollen, obwohl die gleichnamig sind, dann müssen Sie einen Modulnamen, so wie hier, davor angeben. Was übrigens nicht notwendig ist, das ist mehr ein Zeichen einer mindestens 20, 30 Jahren alten Programmierart, ist ein Call davor zu schreiben. Das ist völlig überflüssig, wenn Sie das in irgendwelche Beispielen sehen, können Sie es weglassen. und dieses ist, sage ich mal, übertrieben. Aber, wenn Sie dafür sorgen wollen, dass eine Prozedur außerhalb eines Moduls gar nicht nutzbar ist, dann müssen Sie die explizit verstecken. Das ist andersherum, wie bei Variablen. Bei Variablen müssen Sie ja ausdrücklich sagen, ich veröffentliche diese Variable, indem Sie ein Public davor schreiben, damit sie überhaupt außerhalb des Moduls sichtbar wird. Bei Prozeduren ist es interessanterweise genau umgekehrt, Sie müssen eine Prozedur verheimlichen, wenn die nach außen hin nicht sichtbar sein soll. Also sub Ich werde unsichtbar, nenne ich die mal einfach, die macht nichts, mit dem Hochkomma kann ich ja einen Kommentar reinschreiben. Tippgeräusche Völlig egal. Und wenn ich jetzt hier, wie eben schon gezeigt, aus modSub, ein Punkt, alle Prozeduren anzeigen lasse, um eine auszuwählen, dann steht sie hier noch drinnen. Das ich mich gerade in der gleichen Prozedur befinde, ist völlig unerheblich. Wenn ich diese Prozedur oder irgendeine davon verheimlichen will, dann muss ich ausdrücklich ein Privat davor schreiben. Dann wird diese Prozedur versteckt. Es ist weder aus anderen Modulen noch, wenn Sie es hier in dieser Schreibweise angeben, noch hier sichtbar. Das wäre typisch, wenn Sie es von woanders aufrufen. Innerhalb dieses Moduls dürfen Sie die weiter benutzen. Ich kann gerne noch ein debug. Print ergänzen, damit Sie sehen, dass sie auch tatsächlich aufgerufen wird. Wenn ich das jetzt also laufen lasse hier mit F5, dann sehen Sie, die wird tatsächlich aufgerufen. Nur von einer beliebigen anderen aus, wenn ich dort jetzt modSub aufrufe, dann kann ich die nicht sehen und selbst wenn ich den Namen eintippe, gibt es zur Laufzeit einen Fehler, weil der Compiler sagt: Die kann ich von hier aus nicht benutzen. Also das ist eine nach außen unsichtbare Prozedur und das ist durchaus sinnvoll, wenn man bestimmte Sachen nur innerhalb des Moduls aufführen möchte. Spätestens wenn es um Klassenprogrammierung geht, ist das wichtig, damit nicht überflüssige, gar störende Prozeduren oder Functions, für die gilt das Gleiche erstmal mit Privat, von außen aufgerufen werden können. Also der Normalfall eine Prozedur ist, Sie geben einen Namen an. Der Aufruf geschieht, indem Sie diesen Namen notieren ohne weitere Zusätze und wenn Sie nicht wollen, dass diese Prozedur auch außerhalb des Moduls benutzt werden kann, dann wird sie explizit verheimlicht, nämlich mit Privat.

Excel 2016 VBA Grundkurs

Lassen Sie sich systematisch in die Excel-Programmierung mit Visual Basic for Applications (VBA) einführen.

7 Std. 25 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:30.08.2016

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!