Supportnet Computer
Planet of Tech

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

Antwort 2 von nighty

hi all :)

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ß

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

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.

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

Antwort 7 von nighty

hi all :)

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:

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