Supportnet / Forum / Tabellenkalkulation
Zellen per Makro ein- und ausblenden, obwohl Blattschutz aktiviert ist - Wie möglich?
Frage
Hallo!
Ich habe eigentlich ein ganz einfaches Anliegen, aber ich befürchte es ist nicht umsetzbar.
In einem Tabellenblatt habe ich einige Kontrollkästchen erstellt und jedem ein Makro zugewiesen, dieses Makro blendet u. a. bestimmte Zellen aus. Ich möchte aber gleichzeitig diese Zellen schützen und deren Formelinhalt ausblenden (halt über Extras - Schutz - Blatt schützen - Inhalte). Ist der Schutz aktiviert, kann das Makro aber nicht ausgeführt werden, weil dem Objekt (den Zellen) nicht der Wert (Hidden = True;False) zugeführt werden kann. Ist ja auch klar.. sind ja geschützt.
Meine Frage ist halt, ob ich diesen Schutz einschränken kann? Oder müsste ich diesen per Makro vorher immer aktivieren bzw. deaktivieren?
Gibt es da nicht "schönere" Lösungen?
Viele Grüße
Dalex
Antwort 1 von fedjo
Hallo,
man kann den Schutz natürlich einschränken, unter
Format, Zellen, Schutz..
Aber geschützte Zellen können auch durch Makros nicht bearbeitet werden.
Gruß
fedjo
man kann den Schutz natürlich einschränken, unter
Format, Zellen, Schutz..
Aber geschützte Zellen können auch durch Makros nicht bearbeitet werden.
Gruß
fedjo
Antwort 2 von nighty
hi all :)
per Makro vorher immer aktivieren bzw. deaktivieren
antwort selbst beantwortet :)))
der makrorecorder ist oft hilfreich :)
gruss nighty
per Makro vorher immer aktivieren bzw. deaktivieren
antwort selbst beantwortet :)))
der makrorecorder ist oft hilfreich :)
gruss nighty
Antwort 3 von fürLau
Hallo
Mit dem Argument UserInterFaceOnly der Protect-Methode könnte das gehen.
Allerdings muß der Blattschutz dann aber über ein Makro gesetzt werden.
Gruß
Mit dem Argument UserInterFaceOnly der Protect-Methode könnte das gehen.
Allerdings muß der Blattschutz dann aber über ein Makro gesetzt werden.
Gruß
Antwort 4 von Dalex999
@ nighty & fürLau
Die Lösung den Schutz aufzuheben für das Makro, finde ich irgendwie nicht sooo gut, weil wenn ein Fehler auftreten sollte und das Makro nicht beendet werden kann, wird der Schutz nicht mehr aktiviert.
Das finde ich irgendwie doof ;-)
Werde das erst mal so umsetzen, aber glücklich finde ich die Lösung nicht.
Gibt aber wohl auch keine Lösung des ich trotz Blattschutz arbeiten kann, das man z.B. einem Makro höchste Priorität zuweist.
Wenn noch jmd. ne Idee hat.. nur zu :)
Aber schon mal Danke!
Gruß
Dalex
Die Lösung den Schutz aufzuheben für das Makro, finde ich irgendwie nicht sooo gut, weil wenn ein Fehler auftreten sollte und das Makro nicht beendet werden kann, wird der Schutz nicht mehr aktiviert.
Das finde ich irgendwie doof ;-)
Werde das erst mal so umsetzen, aber glücklich finde ich die Lösung nicht.
Gibt aber wohl auch keine Lösung des ich trotz Blattschutz arbeiten kann, das man z.B. einem Makro höchste Priorität zuweist.
Wenn noch jmd. ne Idee hat.. nur zu :)
Aber schon mal Danke!
Gruß
Dalex
Antwort 5 von fürLau
@Dalex999
Wie bereits erwähnt in AW 3 UserInterFaceOnly=true erlaubt den makros weiterhin Änderungen vorzunehmen, jedoch keine über die normale Bearbeitungleiste.
Wie bereits erwähnt in AW 3 UserInterFaceOnly=true erlaubt den makros weiterhin Änderungen vorzunehmen, jedoch keine über die normale Bearbeitungleiste.
Antwort 6 von Dalex999
Das einzige was mich daran stört - ich muss das PW ins Makro schreiben und das würde ich gerne umgehen.
Dalex999
Dalex999
Antwort 7 von nighty
hi all :)
statt ins makro zu schreiben das passwort besteht die möeglichkeit einer eingabe !
gruss nighty
statt ins makro zu schreiben das passwort besteht die möeglichkeit einer eingabe !
gruss nighty
Antwort 8 von CaroS
Hallo Dalex999,
sieh Dir mal diese beiden kleinen Makros an, vielleicht ist das eine Idee für Dich:
Makro_eins "überlebt" bei jedem normalen Fehler oder Abbruch von Makro_zwei und stellt den Blattschutz wieder her.
Dafür ist On Error Resume Next in Makro_eins (oder eine speziellere Fehlerbehand-lung) unbedingt erforderlich! Die Division durch 0 steht hier stellvertretend für einen groben Fehler, der ohne Fehlerbehandlung zum sofortigen Abbruch des Makros führen würde.
Gruß,
CaroS
sieh Dir mal diese beiden kleinen Makros an, vielleicht ist das eine Idee für Dich:
Sub makro_eins()
On Error Resume Next
REM *** Hier den Blattschutz per VBA aufheben ***
MsgBox "Makro_eins() ruft Makro_zwei() auf.", , "1"
Call makro_zwei
MsgBox "Makro_eins() arbeitet nach dem Ende von Makro_zwei() in jedem Fall weiter.", , "3"
REM *** Hier den Blattschutz per VBA wieder herstellen ***
End Sub
Sub makro_zwei()
Dim i As Integer
REM *** Hier alle anderen Arbeiten tun ***
MsgBox "Makro_zwei() bricht bei der nachfolgenden Division durch 0 ab." & Chr(13) & "Um die Auswirkung zu zeigen, wird keine Fehlerbehandlung durchgeführt.", , "2"
i = 1 / 0
MsgBox "Ohne Fehlerbehandlung kann Makro_zwei() diese Msgbox nicht mehr anzeigen.", , "nach #DIV/0!"
End Sub
Makro_eins "überlebt" bei jedem normalen Fehler oder Abbruch von Makro_zwei und stellt den Blattschutz wieder her.
Dafür ist On Error Resume Next in Makro_eins (oder eine speziellere Fehlerbehand-lung) unbedingt erforderlich! Die Division durch 0 steht hier stellvertretend für einen groben Fehler, der ohne Fehlerbehandlung zum sofortigen Abbruch des Makros führen würde.
Gruß,
CaroS