Video: 3 Best way to fix just in time debugging problem 100% working 2024
Um ein Makro in Excel verwenden zu können, müssen Ihre Benutzer Makros aktivieren. Das heißt, sie müssen Excel die Berechtigung erteilen, Makros in ihrer Umgebung auszuführen. Zum Aktivieren von Makros 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 in der Welt schreiben können, aber sie werden niemals ausgeführt, bis Ihre Benutzer Makros aktivieren. Das wirft die Frage auf; Können Sie Benutzer zwingen, Makros zu aktivieren? Die Antwort ist ja - mit einem kleinen Trick.
Die Idee ist relativ einfach. Sie erstellen ein Blatt namens START. Dieses Blatt enthält nur eine einfache Warnung, dass Makros aktiviert werden müssen. Sie blenden dann alle Blätter in der Arbeitsmappe mit Ausnahme des START-Blattes aus. Schließlich schreiben Sie ein einfaches Makro, das beim Öffnen der Arbeitsmappe alle Blätter einblendet.
Zu diesem Zeitpunkt fordert Excel den Benutzer auf, Makros zu aktivieren, wenn die Arbeitsmappe geöffnet ist. Benutzer werden dazu gezwungen, weil sie nur Ihr Startblatt sehen werden. Die anderen Blätter werden versteckt!
Damit diese Technik funktioniert, benötigen Sie zwei Makros: Ein Makro blendet alle Felder außer dem START-Arbeitsblatt aus, wenn die Arbeitsmappe geschlossen wird, und ein anderes Makro das alle Arbeitsbereiche außer dem START-Arbeitsblatt einblendet, wenn die Arbeitsmappe geöffnet wird.
Nehmen Sie zunächst die Aktionen vor, 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 nach dem Namen Ihres Projekts / Arbeitsmappe und klicken Sie auf das Pluszeichen, um alle Blätter anzuzeigen.
-
Klicken Sie auf ThisWorkbook.
-
Wählen Sie im Dropdown-Feld Ereignis das BeforeClose-Ereignis aus.
-
Geben Sie den folgenden Code ein, oder fügen Sie ihn ein:
Private Sub Workbook_BeforeClose (Abbrechen als boolesch) 'Schritt 1: Deklarieren Sie Ihre Variablen Dim ws As Worksheet' Schritt 2: Blenden Sie die Startblattblätter ein ("START"). Sichtbar = xlSheetVisible 'Schritt 3: Starten Sie das Durchlaufen aller Arbeitsblätter für jedes ws in diesem Arbeitsbuch. Arbeitsblätter 'Schritt 4: Überprüfen Sie jeden Arbeitsblattnamen Wenn ws. Name "START" Then "Schritt 5: Blenden Sie das Blatt aus. Sichtbar = xlVeryHidden Ende Wenn 'Schritt 6: Schleife zum nächsten Arbeitsblatt Nächste ws' Schritt 7: Speichern Sie die Arbeitsmappe ActiveWorkbook. Save End Sub
In Schritt 1 deklarieren Sie ein Objekt namens ws, um einen Speichercontainer für jedes Arbeitsblatt zu erstellen, das Sie durchlaufen möchten.
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 sich die Blattnamen unterscheiden, blenden Sie in Schritt 5 das Blatt mit der Eigenschaft xlVeryHidden aus. Diese Eigenschaft blendet nicht nur das Blatt aus, sondern hindert den Benutzer auch daran, es manuell über die Benutzeroberfläche einzublenden.
Sie gehen zurück, um das nächste Blatt in Schritt 6 zu erhalten.
In Schritt 7 speichert das Makro die Arbeitsmappe und endet, nachdem alle Blätter ausgewertet wurden.
Nun müssen Sie ein Makro schreiben, das alle Aktionen behandelt, die beim Öffnen der Arbeitsmappe ausgeführt werden müssen:
-
Aktivieren Sie Visual Basic Editor, indem Sie ALT + F11 drücken.
-
Suchen Sie im Projektfenster nach dem Namen Ihres Projekts / Arbeitsmappe und klicken Sie auf das Pluszeichen, um alle Blätter anzuzeigen.
-
Klicken Sie auf ThisWorkbook.
-
Wählen Sie im Dropdown-Feld Ereignis das Open-Ereignis aus.
-
Geben Sie den folgenden Code ein, oder fügen Sie ihn ein:
Private Sub Workbook_Open () 'Schritt 1: Deklarieren Sie Ihre Variablen Dim ws As Worksheet' Schritt 2: Starten Sie das Durchlaufen aller Arbeitsblätter Für jede ws In ThisWorkbook. Arbeitsblätter Schritt 3: Alle Arbeitsblätter einblenden ws. Sichtbar = xlSheetVisible 'Schritt 4: Schleife zum nächsten Arbeitsblatt Weiter ws' Schritt 5: Verstecken Sie die Startblattblätter ("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. In diesem Schritt werden alle Arbeitsblätter wirksam sichtbar, wenn jedes Blatt sichtbar gemacht wird.
Sie gehen zurück, um das nächste Blatt in Schritt 4 zu erhalten.
Nachdem alle Blätter sichtbar gemacht wurden, wird in Schritt 5 das START-Blatt ausgeblendet. Wieder 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!