Um ein Makro in Excel verwenden zu können, müssen Ihre Benutzer Makros aktivieren. Das heißt, sie müssen Excel die Berechtigung zum Ausführen von Makros in ihrer Umgebung erteilen. Um Makros zu aktivieren, klicken Benutzer in der Sicherheitswarnung, die über der Bearbeitungsleiste angezeigt wird, auf die Schaltfläche Inhalt aktivieren.

Die Quintessenz ist, dass Sie alle ausgefallenen Makros der Welt schreiben können, aber sie werden nie ausgeführt, es sei denn, Ihre Benutzer aktivieren Makros. Dies wirft die Frage auf; Können Sie Benutzer zwingen, Makros zu aktivieren? Die Antwort ist ja – mit ein wenig Tricks.
Die Idee ist relativ einfach. Sie erstellen ein Blatt mit dem Namen, sagen wir, START. Dieses Blatt enthält nur eine einfache Warnung, die besagt, dass Makros aktiviert werden müssen. Anschließend blenden Sie alle Blätter in der Arbeitsmappe mit Ausnahme dieses START-Blatts aus. Schließlich schreiben Sie ein einfaches Makro, das beim Öffnen der Arbeitsmappe alle Blätter einblendet.

An diesem Punkt, wenn die Arbeitsmappe geöffnet wird, fordert Excel den Benutzer auf, Makros zu aktivieren. Benutzer werden dazu gezwungen, da sie nur Ihr Startblatt sehen. Die anderen Blätter werden ausgeblendet!
Damit diese Technik funktioniert, benötigen Sie zwei Makros: Ein Makro blendet beim Schließen der Arbeitsmappe alles außer dem START-Blatt aus und ein anderes Makro blendet beim Öffnen der Arbeitsmappe alle außer dem START-Blatt ein.
Behandeln Sie zunächst die Aktionen, die beim Schließen der Arbeitsmappe ausgeführt werden müssen. :
Aktivieren Sie den Visual Basic-Editor, indem Sie ALT+F11 auf Ihrer Tastatur drücken
Suchen Sie im Projektfenster Ihren Projekt-/Arbeitsmappennamen und klicken Sie auf das Pluszeichen daneben, um alle Blätter anzuzeigen.
Klicken Sie auf Diese Arbeitsmappe.
Wählen Sie im Dropdown-Feld Ereignis das Ereignis BeforeClose aus.

Geben oder fügen Sie den folgenden Code ein:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Schritt 1: Deklarieren Sie Ihre Variablen
Dim ws als Arbeitsblatt
'Schritt 2: Blenden Sie das Startblatt ein
Sheets("START").Visible = xlSheetVisible
'Schritt 3: Beginnen Sie mit dem Durchlaufen aller Arbeitsblätter
Für jedes ws in ThisWorkbook.Worksheets
'Schritt 4: Überprüfen Sie jeden Arbeitsblattnamen
Wenn ws.Name <> "START" Then
'Schritt 5: Das Blatt ausblenden
ws.Visible = xlVeryHidden
Ende Wenn
'Schritt 6: Schleife zum nächsten Arbeitsblatt
Nächstes ws
'Schritt 7: Speichern Sie die Arbeitsmappe
ActiveWorkbook.Speichern
End Sub
In Schritt 1 deklarieren Sie ein Objekt namens ws, um einen Speichercontainer für jedes Arbeitsblatt zu erstellen, das Sie durchlaufen werden.
In Schritt 2 stellen Sie sicher, dass das START-Blatt sichtbar ist.
In Schritt 3 starten Sie die Schleife und teilen Excel mit, dass Sie alle Arbeitsblätter in dieser Arbeitsmappe auswerten möchten.
In Schritt 4 vergleichen Sie einfach den Namen START mit dem Blatt, das gerade geloopt wird. Dieser Schritt stellt sicher, dass die nächsten Aktionen auf alle Blätter außer dem START-Blatt angewendet werden.
Wenn die Blattnamen unterschiedlich sind, blenden Sie das Blatt in Schritt 5 mithilfe der xlVeryHidden-Eigenschaft aus. Diese Eigenschaft blendet das Blatt nicht nur aus, sondern verhindert auch, dass der Benutzer es manuell über die Benutzeroberfläche einblendet.
Sie kehren zurück, um das nächste Blatt in Schritt 6 zu erhalten.
In Schritt 7 speichert das Makro, nachdem alle Blätter ausgewertet wurden, die Arbeitsmappe und wird beendet.
Jetzt müssen Sie ein Makro schreiben, das alle Aktionen verarbeitet, die beim Öffnen der Arbeitsmappe ausgeführt werden müssen:
Aktivieren Sie den Visual Basic-Editor, indem Sie ALT+F11 drücken.
Suchen Sie im Projektfenster Ihren Projekt-/Arbeitsmappennamen und klicken Sie auf das Pluszeichen daneben, um alle Blätter anzuzeigen.
Klicken Sie auf Diese Arbeitsmappe.
Wählen Sie im Dropdown-Feld Ereignis das Ereignis Öffnen aus.

Geben oder fügen Sie den folgenden Code ein:
Private Unterarbeitsmappe_Open()
'Schritt 1: Deklarieren Sie Ihre Variablen
Dim ws als Arbeitsblatt
'Schritt 2: Beginnen Sie mit dem Durchlaufen aller Arbeitsblätter
Für jedes ws in ThisWorkbook.Worksheets
'Schritt 3: Alle Arbeitsblätter einblenden
ws.Visible = xlSheetVisible
'Schritt 4: Schleife zum nächsten Arbeitsblatt
Nächstes ws
'Schritt 5: Das Startblatt ausblenden
Sheets("START").Visible = xlVeryHidden
End Sub
In Schritt 1 deklarieren Sie ein Objekt namens ws, um einen Speichercontainer für jedes Arbeitsblatt zu erstellen, das Sie durchlaufen.
In Schritt 2 starten Sie die Schleife und teilen Excel mit, dass Sie alle Arbeitsblätter in dieser Arbeitsmappe auswerten möchten.
In Schritt 3 blenden Sie das Blatt ein, das gerade geloopt wird. Dieser Schritt blendet effektiv alle Arbeitsblätter ein, da jedes Blatt sichtbar gemacht wird.
Sie kehren zurück, um das nächste Blatt in Schritt 4 zu erhalten.
Nachdem alle Blätter sichtbar gemacht wurden, blendet Schritt 5 das START-Blatt aus. Auch hier verwenden Sie die xlVeryHidden-Eigenschaft, damit der Benutzer das Blatt nicht manuell über die Benutzeroberfläche einblenden kann.
Nachdem beide Makros implementiert wurden, haben Sie eine Arbeitsmappe, die nur funktioniert, wenn der Benutzer Makros aktiviert!