Hier kommt die versprochene Fortsetzung von “Einführung in Excel & VBA – Teil 1“, beginnend mit Schritt drei:
Schritt 3: Projektübersichten erstellen & aktualisieren (VBA)
Im letzten Schritt wollen wir dafür sorgen, dass die Projektübersichten über einen Klick automatisch erstellt werden können. Dazu nutzen wir die Entwicklertools (CommandButton) und VBA.
Hinweis: Um den VBA-Editor in Excel zu öffnen, einfach die Tastenkombination [Alt] + [F11] drücken. Alternativ kann auch über das Menü „Entwicklertools“ (muss ggf. erst über „Datei“ –> „Optionen“ –> „Menüband anpassen“ aktiviert werden) auf den Editor zugegriffen werden.
- Registerblatt „Entwicklertools“ –> „Einfügen“ –> ActiveX-Steuerelemente –> „Befehlschaltfläche“ zum Beispiel im Blatt Projektliste einfügen
- „Entwurfsmodus“ aktivieren –> Rechtsklick auf Button
- Über „Eigenschaften“ lässt sich neben Größe, Schriftstil, Farben, etc. auch die Bennenung im Editor anpassen (ohne Leerzeichen!).
- Über „Befehlschaltfläche-Objekt“ –> „Bearbeiten“ lässt sich die auf dem Button angezeigte Benennung anpassen.
- Über „Code anzeigen“ öffnet der Editor direkt den passenden Sub, in den wir unseren Code einfügen können.
Beim Klick auf den Button werden die einzelnen Projekte nun erstellt und entsprechend ausgefüllt:
Um bei dem nächsten Abruf der Projektübersichten die aktuelle Version zu erhalten, müssen eventuelle neue Projekte und/ oder neue Mitarbeiter:innen in den Projekten mit eingebunden werden. Dies lässt sich unkompliziert lösen, indem zunächst alle Übersichten gelöscht und dann neu aufgebaut werden. Hierfür können wir eine einfache Prozedur nutzen.
Zunächst fügen wir im Editor ein neues Modul ein und hinterlegen dort den Code für den Sub “ProjekteLöschen()”.
Option Explicit Sub ProjekteLöschen() 'Variable definieren Dim i As Long 'Anzeigeänderungen abschalten (Optik) Application.DisplayAlerts = False 'Alle Blätter bis auf Projektliste, Mitarbeiterliste, Template und eventuelle ausgeblendete Blätter werden gelöscht For i = ActiveWorkbook.Worksheets.Count To 1 Step -1 If Sheets(i).Name <> "Projektliste" And Sheets(i).Name <> "Mitarbeiterliste" And Sheets(i).Name <> "Template" And Sheets(i).Visible = xlSheetVisible Then Sheets(i).Delete Next i 'Anzeigeänderungen einschalten Application.DisplayAlerts = True End Sub
Danach ergänzen wir in unserem ursprünglichen Code den Aufruf Call “ProjekteLöschen”. Dies bewirkt, dass bei Start des Subs “ProjekteErstellen” zunächst der Sub “ProjekteLöschen” aufgerufen (d.h. gestartet) wird.
Option Explicit Private Sub ProjekteErstellen_Click() 'Einfache Prozedur --> Sub ProjekteLöschen wird nach Klick auf CommandButton gestartet Call ProjekteLöschen 'Variablen definieren Dim Zelle As Range Dim WS As Worksheet Dim Bereich As Range Set WS = ThisWorkbook.Sheets("Projektliste") Set Bereich = Sheets("Projektliste").Range("Projekte") 'Anzeigeänderungen abschalten (Optik) Application.ScreenUpdating = False 'Für jedes in der Projektliste hinterlegte Projekt wird das Blatt Template 1x kopiert und entsprechend dem Projektnamen umbenannt For Each Zelle In Bereich Sheets("Template").Copy after:=Sheets(Sheets.Count) ActiveSheet.Name = Zelle WS.Activate Next Zelle 'Anzeigeänderungen einschalten Application.ScreenUpdating = True 'Benachrichtigung nach Erstellen der Übersichten anzeigen MsgBox "Alle Projektübersichten wurden erstellt." End Sub
Kommt nun zum Beispiel das Projekt E mit dem Mitarbeiter Max Mustermann hinzu, werden bei Klick auf den Command Button zunächst die bestehenden Projektübersichten gelöscht und danach wieder neu erstellt, wodurch wir die aktuelle Version der Übersichten erhalten.
Dies ist ein einfaches Anwendungsbeispiel, dass sich auf andere Konzepte übertragen lässt. Wir nutzen dieses Vorgehen zum Beispiel bei den Vorbereitungen der Qualitätssicherungsmaßnahmen in einem unserer Projekte.