Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[Blattschutz] Worauf achten?
#1
Hallo zusammen,

ich habe aktuell folgendes Problem: Sobald ich nur Zellen freischalte, die tatsächlich auch durch den Nutzer bearbeitet werden sollen, blockiert der Blattschutz gleichzeitig meine ganzen Makros in der Arbeitsmappe.

Mag mir jemand sagen oder vielleicht sogar eine nützliche Quelle nennen, wie ich meine Arbeitsmappe schützen kann, SODASS alle Makros weiterhin funktionieren.

Ich weiß es gibt die Funktion Sheet("").Protect und Sheet("").Unprotect. Muss ich diese beiden Befehle nun, vor jedem VBA Schnipsel setzen?

Vielen Dank im Voraus.

Gruß

Ricci
Antworten Top
#2
Hi,

vor der Code-Ausführung den Blattschutz aufheben, danach wieder setzen.

Siehe auch hier: https://www.business-wissen.de/artikel/e...ktivieren/
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • ricci
Antworten Top
#3
Hallo

konkret auf den Code beaogen so: direkt NACH Sub Dein_Code den Befehl Unprotect und VOR End Sub den Befehl Protect. Geht mit und OHNE Passwort.

mfg Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • ricci
Antworten Top
#4
Hallöchen,

den Blattschutz aufzuheben hat eventuell auch den Nachteil, dass bei Abbruch durch Fehlermeldungen das Programmende mit dem Setzen nicht erreicht wird.
Da kann man mit einer gezielten Fehlerverarbeitung nachhelfen, oder schaue mal in die Suche und suche nach "UserInterface" ... Das wäre eine weitere Variante.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 2 Nutzer sagen Danke an schauan für diesen Beitrag:
  • ricci, DIZA
Antworten Top
#5
Einfach verzichten auf Blatt'schutz'.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • ricci
Antworten Top
#6
Zitat:Einfach verzichten auf Blatt'schutz'.
... und ein Makro schreiben, was eventuelle Änderungen rückgängig macht, wo nix geändert werden soll 15
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • ricci
Antworten Top
#7
Vielen Dank für eure Antworten!

Ich sehe darin das Problem, da ich auf meinem Tabellenblatt mit vielen XVerweisen und im Makro selbst mit vielen Bezügen auf andere Tabellenblätter arbeite.
Ich habe bereits versucht mit Sheet("").Unprotect und Sheet("").Protect zu arbeiten. Allerdings stieß ich so immer wieder auf, nicht ausführbaren Code durch den Blattschutz. Obwohl ich diese Befehle direkt nach Sub ... und Vor End Sub gesetzt habe.

Mir fällt es also schwer zu erkennen, wann ich welches Blatt öffnen und sperren muss. Ich habe auch schon daran gedacht, mit einer Funktion einfach ALLE Blätter zu entsperren und nach dem Makro wieder zu sperren. Dies stelle ich mir aber nicht unbedingt performant vor.

Zitat:oder schaue mal in die Suche und suche nach "UserInterface" ... Das wäre eine weitere Variante.

Danke, werde ich mir gleich anschauen!

Zitat:[size=medium]... und ein Makro schreiben, was eventuelle Änderungen rückgängig macht, wo nix geändert werden soll [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Ist das der Way to go? In einem Video habe ich von der Vorgehensweise auch schon gesehen.

Gruß

Ricci
Antworten Top
#8
Hallöchen,

also, wenn Du statt dem Blattschutz ein ÄnderungenRückgängigMachenMakro nehmen willst, ist das wohl etwas wie mit den Kanonen und den Spatzen. Wenn man z.B. nur versehentliche Änderungen verhindern will, ist der Schutz aus meiner Sicht die bessere Variante.

Den Schutz überall rauszunehmen und wieder zu setzen ist hinsichtlich der Performance kein Problem. Du musst nur eben schauen, dass der Schutz beim Speichern wieder drin ist - siehe meine Anmerkung zu abgebrochenen Makros. Da könnte man z.B. im BeforeSave (siehe Ereignismakros in DieseArbeitsmappe) über alle betreffenden Blätter gehen ...

Wenn die Daten auf verschiedenen Blättern sind, ist die nächste Frage, ob die Anwender dort drauf gehen. Wenn nicht, dann blende die Blätter aus und verzichte, wie von snb vorgeschlagen, zumindest dort auf den Blattschutz.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • ricci
Antworten Top
#9
Moin!
Ich komme mal auf Andrés UserInterface zurück.
Wenn Du beim Öffnen der Mappe alle Blätter mit gesetztem Parameter UserInterfaceOnly:=True schützt,
• kann VBA-Code trotzdem ändern ohne den Schutz aufzuheben
• brauchst Du Dich nicht um Programmabstürze zu sorgen, es kann eben nicht vorkommen, dass ein Blatt versehentlich ungeschützt ist
https://learn.microsoft.com/de-de/office...et.protect

Mal quick & dirty.
Code gehört in DieseArbeitsmappe:
Code:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
  ws.Protect "Dein Passwort", UserInterfaceOnly:=True
Next
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 2 Nutzer sagen Danke an RPP63 für diesen Beitrag:
  • ricci, DIZA
Antworten Top
#10
Ralf und  schauan vielen Dank!

Die Funktion UserInterfaceOnly ist es gewesen. Nun funktioniert alles wie es soll!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste