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

Excel 2016 VBA für Profis

Workbook_Open

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die Prozedur Workbook_Open muss sich im Modul DieseArbeitsmappe befinden und wird dann automatisch beim Öffnen der Datei ausgeführt.

Transkript

Dieses Konzept der vordefinierten Prozedurnamen, die aus Objektname und Ereignis bestehen; also hier "btnOk_Click", da "btnAbbrechen_Click"; auch "UserForm_Initialize" und natürlich genauso dieses "Schaltfläche3_Klicken". Dieses Objekt der zusammengesetzten Prozedurnamen gibt es noch an einer anderen Stelle, und zwar hier in dieser Arbeitsmappe. Das ist ein ganz spezielles Modul, in dem eigentlich auch nur spezielle Prozeduren stehen sollten. Sie sieht zwar aus wie jedes andere, sollte aber nur für spezielle Dinge benutzt werden, nämlich für die, die jetzt kommen: Sie können Prozeduren nicht nur ausführen, wenn ein Benutzer etwas anklickt, "btnOk_Click", oder wenn etwas wissentlich passiert, sozusagen; "UserForm Initialize", Sie kriegen Bescheid, dass der Dialog gezeichnet wird und können also schnell noch was machen, sondern auch in größeren Zusammenhängen, sozusagen, nämlich wenn diese Datei geöffnet wird. Früher gab es mal ein Makro, das hieß dann "AutoOpen", und das Problem war, dass man dieses AutoOpen in vielen Modulen erfinden konnte und völlig unklar war, welches davon aufgerufen wird. Das ist inzwischen eindeutiger, das heißt auch nicht mehr so, sondern die Konstruktion sagt, "Ich beziehe mich auf das Workbook"; es steht nur in dieser Arbeitsmappe hier, in dieser Liste "Workbook" als Objekt. Und dort, wie gewohnt, Ihr Ereignis, allerdings nur, wenn man hier reinklickt, nicht in "Option Explicit", dann sehen Sie die Ereignisse zu Workbook. Das Standardereignis ist "Open" und damit Sie sehen, dass es aufgerufen wird, mache ich jetzt hier die ewige MessageBox, die dann Bescheid sagt, "Ich wurde von Workbook_Open aufgerufen", kann man noch ein "vbInformation" dahinter machen. Und diese Prozedur kann man natürlich wie jede andere Prozedur-- das ist ein "Sub", kann ich einfach mit F5 erstmal testen; soweit funktioniert das. Aber der eigentliche Trick besteht darin, dass ich an der Stelle, ohne dass der Benutzer etwas ahnt, dafür sorgen will, dass die Prozedur beim Öffnen der Arbeitsmappe ausgelöst wird. Ich werde also nicht nur, den VBA-Editor schließen, sondern auch ruhig komplett Excel. Dann starte ich die aus dem Dateimanager heraus, wieder ganz neu, und Sie sehen, ohne dass ich etwas tun musste, wird diese Prozedur direkt ausgelöst. Ich wechsle mit ITFL mal wieder dahin, nämlich in diese Arbeitsmappe. Normalerweise stehen an der Stelle natürlich keine MessageBoxen, sondern da würde man irgendetwas anderes machen. Ich mache an so einer Stelle-- ich werde das mal hier kommentieren, weil das furchtbar ist, wenn das mit jedem Öffnen der Datei immer eine MessageBox erzeugt. Ich würde an so einer Stelle zum Beispiel vermerken, "Wer hat diese Datei aufgerufen?", oder schnell irgendwelche Informationen aus anderen Dateien zusammensammeln, die für diese Datei vielleicht wichtig sind. Also, im Moment kommentiert, damit sie mich nicht stört, denn es gibt eine andere Prozedur, die, sagen wir, praktischer ist. Wenn Sie hier in dies Workbook-Prozedur klicken, sehen Sie hier wieder die Ereignisse und es gibt da eine, die heißt "SheetActivate"; "Blatt aktivieren". Und Sie sehen, Sie bringt auch Parameter mit, nämlich welches Blatt aktiviert wurde. Das soll hier ein bisschen, sagen wir, nachlässig notiert, "Sheet" heißen. Ist leider nicht "As Worksheet" oder "As Sheet" deklariert, sondern nur "As Object"; das ist sehr unspezifisch. Und, das muss Sie jetzt hier nicht irritieren; da gibt es noch eine Zusatzangabe; "By Value", meint, es wird das Blatt selbst übergeben, im Gegensatz zu "By Reference", da ist es nur ein Zeiger. Der Unterschied muss Sie im Moment gar nicht interessieren, Weil das hier ein wenig unspezifisch ist, werde ich das jetzt besser deklarieren: "dim wksAktiv as Worksheet", so, und jetzt mit Tab auswählen. Und dann kann ich einfach mit Z-- Sie erinnern sich, dass Objektvariablen mit Z zugewiesen werden müssen; "wksAktiv = Sh". Das hat vor allem den Vorteil, dass ich gleich die Eigenschaften des Objekts sehe, und ich will jetzt hier einfach mal nur eine MessageBox machen, die das Blatt nennt; das ist wenig spannend. Warum ich den Aufwand eben getrieben habe? Wenn ich jetzt hier "sh." schreiben würde, passiert nichts, weil ich das umgespeichert habe in ein Objekt mit einem ganz klaren Datentyp, kann ich hier jetzt "wksAktiv." schreiben, dann sagt er mir, gibt es eine Name-Eigenschaft, sonst hätte ich auch "sh.name" schreiben können. Also, das Ganze gespeichert; es wird ausgelöst, wenn in diesem Workbook irgendein Blatt aktiviert wird. Also, mit "Alt-F11" rüber nach hier und Sie merken jetzt, wenn ich hier draufklicke, Blatt wird aktiviert, dann erscheint hier die Meldung. Und jedes Mal, wenn ich ein Blatt aktiviere, erscheint das zukünftige Blatt, in das ich jetzt gerade hineinwechsle. Das ist natürlich auf Dauer auch lästig, also ich würde im Normalfall keine MessageBox machen, sondern zum Beispiel können Sie prüfen, ob hier gerade jemand unberechtigt versucht, ein Blatt zu öffnen, was Sie irgendwie ausgeblendet haben oder wo auf einem anderen Blatt irgendwelche Hilfsrechnungen und Daten noch nicht fertig sind, die er eintragen muss, können Sie schnell beim Betreten, "SheetActivate", prüfen, ob bestimmte Felder schon ausgefüllt sind in dem anderen Blatt und möglicherweise dann-- der Befehl hieße dann, zum Beispiel, "Tabelle2.Activate", können Sie ihn zwingen, erst wieder in das andere Blatt zu gehen, bevor hier irgendein Ergebnis das Blatt betreten darf. Also "Workbook_SheetActivate" ist eigentlich so eine gan typische Prozedur, wenn Sie gucken wollen, was der Benutzer gerade in welchem Blatt macht, vor allem welches Blatt er betritt und "Workbook_Open" ist die Prozedur, die ausgeführt wird, wenn diese Datei geöffnet wird.

Excel 2016 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2016, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

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!