Ich versuche, eine Schutzfunktion aufzurufen, die ausgeführt werden soll, bevor die Arbeitsmappe geschlossen wird, aber nicht funktioniert. Der Schutz Unter arbeitet an seiner eigenen Ordnung, aber nicht, wenn sie in Workbook_BeforeClose() aufgerufenAufruf der Funktion BeforeClose-Ereignis in VBA funktioniert nicht
Dies ist der Code in Modul 1 zu finden ist:
Public Sub protect()
Dim index As Integer
index = 1
Do While index <= ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Sheets(index).Activate
If ActiveSheet.Name <> "README" Then
ActiveSheet.unprotect
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.Range("A1").Select
End If
index = index + 1
Loop
ActiveWorkbook.Sheets(1).Activate
End Sub
Dies ist der Code gefunden in Thisworkbook:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call protect
End Sub
Willkommen bei StackOverflow, Code Mädchen. Was meinst du damit, wenn du sagst, dass es nicht funktioniert? Tritt ein Fehler auf, während der Code ausgeführt wird oder läuft der Code (scheinbar) überhaupt nicht, weil die Blätter nicht geschützt sind? Wenn Sie den letzteren der beiden Fälle annehmen, dann würde ich eine "MsgBox" einfügen, nur um sicher zu sein (wenn der Code läuft oder nicht). Wie löst man das Ereignis '_BeforeClose' aus? Schließen Sie die Datei (Excel bleibt geöffnet) oder schließen Sie Excel (und wie)? – Ralph
Wenn ich dieses kinfd des Problems bekomme, füge ich hier und da in meinem Code etwas ein wie 'debug.print jetzt, 'Protect'' (oder irgendein Modulname) –
Der Code läuft überhaupt nicht. Ich habe ein Meldungsfeld eingefügt und es erschien vor dem Schließen der Datei, aber der Schutz-Sub lief noch immer nicht:/Das BeforeClose-Ereignis wird ausgelöst, wenn Sie die Datei schließen, dann fragt es, ob Sie Änderungen speichern möchten, bevor Sie schließen; Selbst wenn Sie Abbrechen anstatt Speichern auswählen, wird der Code immer noch ausgeführt, bevor Sie aufgefordert werden, –