Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1508to1512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Problem bei gesetztem "ActiveSheet.Protect"

VBA - Problem bei gesetztem "ActiveSheet.Protect"
16.08.2016 08:41:29
Boory@gmx.net
Hallo Forum,
in einer Zeiterfassung, in der die MA sich per Transponder-Scan einloggen, wird VBA-seitig der Blattschutz (hier PW: 12345) aufgehoben, der Wert eingetragen und dann wieder geschützt (ActiveSheet.Unprotect / ActiveSheet.Protect). Dies funktioniert problemlos! Nun möchte ich über ein Userform per Call ein Modul aufrufen, in dem zum Eintrag eines neuen "Monats-Ersten" alle alten Einträge gelöscht werden, da der MA ja die geschützten Zellen nicht selbst löschen kann. Dann wird ein "SaveAs" ausgeführt, in dem die Datei mit Namen des MA und aktuellem Monat gespeichert wird und sich das Userform dann schließt. So weit die Theorie... :o)
Wenn ich jetzt im Sheet selbst den VBA-Code mit "ActiveSheet.Protect" beende, bekomme ich eine Fehlermeldung -- Debuggen. Diese tritt aber nur auf, wenn die gefüllten Zellen (aktuell per Button) geleert werden, da das Sheet ja dafür ebenfalls unprotected werden muss (geschieht im Modul11). Kommentiere ich das "ActiveSheet.Protect..." am Codeende im Worksheet aus, funktioniert der Code wie gewünscht.
Was übersehe ich...? Datei hier:
https://www.herber.de/bbs/user/107639.xlsm
Blattschutz-PW: 12345
Viele Grüße - Boory

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Problem bei gesetztem "ActiveSheet.Protect"
16.08.2016 10:33:49
Matthias
Hallo
Leider kann ich das nicht komplett testen, da schon beim Laden des Formulares
der Debugger anspringt.
Der DTPicker ist nicht auf meinem System vorhanden, deshalb bekomme ich den Fehler
Ich kann aber auch nicht den ungültigen Verweis entfernen da Du ein VBA-Kennwort gesetzt hast.
Somit komme ich nicht an die Verweise(deaktiviert).
Beim direktem Ausführen des Code aus Modul11 läuft alles sauber durch.
Aber evtl, solltest Du die Events(Ereignisprozedur) erst ausschalten

Sub Delete_Content_only()
' Delete_Content Makro
ActiveSheet.Unprotect "12345"
Application.EnableEvents = False
Range("C3:C33,D3:D33,E3:E33").ClearContents
Range("D3").Select '

da sonst das Worksheet_Change des Erfassungsblattes immer wieder gestartet wird.
Evtl hilft das ja schon.
Gruß Matthias
Anzeige
AW: VBA - Problem bei gesetztem "ActiveSheet.Protect"
16.08.2016 10:34:57
ChrisL
Hi
Wo wie was genau konnte ich nicht erkennen, aber das Problem ist folgendes. Durch das Löschen wird das Change Event angesprochen und durch die Zellenänderungen im Change-Ereignis erneut ein Change Ereignis... irgendwie so :)
Jedenfalls musst du das Event beim Löschen deaktivieren:
Sub Delete_Content_only()
' Delete_Content Makro
On Error Resume Next
Application.EnableEvents = False
With ActiveSheet
.Unprotect "12345"
.Range("C3:C33,D3:D33,E3:E33").ClearContents
.Protect "12345"
End With
Application.EnableEvents = True
End Sub

cu
Chris
Anzeige
AW: VBA - Problem bei gesetztem "ActiveSheet.Protect"
16.08.2016 10:54:15
Boory@gmx.net
Hallo Chris und Matthias,
genau DAS war die Lösung. ich hab quasi das Event in eine Schleife gezwungen.
Blind -- Wald -- Bäume... :o)
Ganz lieben Dank! Ich hab's so eingebaut und jetzt läuft das Script so, wie ich es wollte!
Vielen Dank
Boory

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige