Tag Archives: Schutz

Mach dich erst einmal unbeliebt – dann wirst du auch nicht mehr erst genommen.

Ich möchte gerne per VBA auf einem geschützten Excel-Formular eine Dropdownliste (Datenüberprüfung) ändern. Okay – man hätte die auch per Formeln mit zwei Dropdownlisten erzeugen können – aber mit meiner VBA-Lösung bin ich flexibler.

Der Code lautet:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim intZeilen As Integer

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     Dim intZeilen As Integer
If Target.Value = "Für Standorte" Or Target.Value = "Für Gebäude" Then
    ActiveSheet.Unprotect
        If Target.Value = "Für Standorte" Then
            intZeilen = ThisWorkbook.Worksheets("tbl_Basisdaten").Range("B1").CurrentRegion.Rows.Count
            Target.Value = "Für Gebäude"
            With Target.Offset(0, 1).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=tbl_Basisdaten!$B$2:$B$" & intZeilen ' -- Spalte B bei "Standorten"
            End With
        ElseIf Target.Value = "Für Gebäude" Then
            intZeilen = ThisWorkbook.Worksheets("tbl_Basisdaten").Range("D1").CurrentRegion.Rows.Count - 1
            Target.Value = "Für Standorte"
            With Target.Offset(0, 1).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=tbl_Basisdaten!$D$2:$D$" & intZeilen ' -- Spalte D bei "Gebäuden"
            End With
        End If
        With Target.Offset(0, 1).Validation
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
        Target.Offset(0, 1).Value = ""

    ActiveSheet.Protect
End If

End Sub

Ich erhalte einen Fehler:

Klaro – ich schützte das Blatt (ActiveSheet.Protect) und anschließend wirkt der Doppelklick, denn ich verwende ja das Ereignis BeforeDoubleClick. Die Lösung ist einfach: ich setze den Cursor auf eine nicht gesperrte Zelle – dann klappt es:

Target.Offset(0, 1).Activate

Witzigerweise befindet sich DANN der Cursor in keiner Zelle.

Vegetarier essen meinem Essen das Essen weg!

Heute in der Excelschulung schauen wir uns den Blattschutz an. Ich erkläre, dass man an den inaktiven Symbolen (beispielsweise in „Start“) erkennen kann, ob ein Tabellenblatt geschützt ist:

Eine Teilnehmerin meldet sich und sagt, dass bei ihr auch die Symbole in „Überprüfen“ ausgegraut sind:

Klar – der Cursor befindet sich in der Zelle und nicht auf der Zelle.

Übergewicht klingt nicht schön! Das heißt jetzt „bezauberndes Bonusmaterial“.

Und schon wieder reingefallen:

Die Visible-Eigenschaft des Worksheet-Objektes kann nicht festgelegt werden.

Ich will doch bloß die Visible-Eigenschaft im VBA-Editor ändern. Warum darf ich nicht?

GGGGRRRRR. Die Arbeitsmappe ist geschützt (Überprüfen / Schützen / Arbeitsmappe schützen).

Könnte Excel aber auch genauer sagen …

Wenn mir langweilig ist, gehe ich in einem Bekleidungsgeschäft in eine Umkleidekabine und rufe: „Hey, hier ist kein Toilettenpapier!“

Ich programmiere ein Formular für einen Kunden. Einige Zellen sollen dynamische gesperrt oder entsperrt werden. Ich erhalte eine Fehlermeldung:

Seltsam: Der Befehl:

MsgBox Range(„K158“).Locked liefert False

Okay – noch ein Versuch:

Nutzt nichts! Ich schaue nach:

Ah! Verbundene Zellen. Ich darf nicht eine Zelle aus diesem Zellverbund sperren oder entsperren – dies funktioniert nur bei der ersten (hier: C158). Könnte mir Excel VBA ja auch sagen …

Große Ereignisse werfen ihre Schatten unter die Augen

Schon blöde: Wir möchten einigen Mitarbeitern einer Firma eine Arbeitsmappe zur Verfügung stellen. Sie sollen die Mappe öffnen, drucken, ansehen, sortieren und filtern dürfen. Aber nichts ändern. Kein Problem: Man kann auf das Tabellenblatt einen Schutz legen und „sortieren“ und „filtern“ freigeben:

Filtern klappt hervorragend – jedoch: sortieren nicht!

Die Zelle oder das Diagramm, die bzw. das Sie ändern möchten, befindet sich auf einem schreibgeschützten Blatt. Um eine Änderung vorzunehmen, heben Sie den Schutz des Blatts auf. Möglicherweise werden Sie aufgefordert, ein Kennwort einzugeben.

Ich drück‘ die Fernbedienung fester, wenn die Batterien leer sind

Schon doof. Ich erstelle für einen Kunden ein dynamisches Excel-Formular. Die Daten sollen automatisiert ausgelesen werden. Deshalb muss ich wissen wie „groß“ das Formular ist, das heißt: wie viele Zeilen es enthält und wo sich bestimmte Informationen befinden.

Leider funktioniert die beiden Befehle

MsgBox Range(„A1“).CurrentRegion.Rows.Count
MsgBox Range(„A1“).SpecialCells(xlCellTypeLastCell).Row

nicht, wenn das Blatt geschützt ist. Also: Schutz aufheben!

Ja, ja, ich weiß: [Strg] + [A] und [Strg] + [Ende] funktionieren auch nicht in Excel …

Hab mich soeben gewogen. Laut der Wasserwaage liege ich perfekt auf der Couch.

Gestern in der Excelschulung fragte ein Teilnehmer, ob man die nicht gesperrten Zellen in einem geschützten Tabellenblatt hervorheben kann. Ich habe kurz überlegt: Es gibt keinen Organizer wie beispielsweise bei der Bedingten Formatierung oder bei den Namen. Mit Start / Bearbeiten / Suchen und Auswählen kann man eine Liste der gesperrten Zellen anzeigen lassen. Aber leider nicht markieren. Man kann mit der [Tab]-Taste über die nichtgesperrten Zellen springen und so herausfinden, wo offene, veränderbare Zelle liegen.

„Nein“ – lautet die Antwort, „hervorheben kann man sie nicht. Man muss sie per Hand formatieren. Beispielsweise grau.“

Männer sind wie guter Wein…sie werden meistens mit dem Alter besser!

Schon blöde: (Intelligente, dynamische, formatierte) Tabellen lassen sich nicht erweitern, wenn das Blatt geschützt ist:

Verständlich: Man entsperrt einen festen Bereich und schützt anschließend das Tabellenblatt ohne diesen fest definierten Bereich. Er wächst leider nicht dynamisch mit.

Danke an Andreas Thehos, der dieses Problem auf den Excellent Days 2018 vorgestellt hat.

Bitte keine Sexanfragen! – Ich kann so schlecht „nein“ sagen.

Heute in der Excelschulung. Wir üben Blattschutz. Zuerst wird der Bereich ausgewählt, dessen Zellen veränderlich sind. Für sie wird im Dialog Zellen formatieren / Schutz die Option „Gesperrt“ entfernt. Anschließend das Blatt geschützt (Überprüfen / Schützen / Blatt schützen), was man am geänderten Symbol „“ erkennen kann.

Eine Teilnehmerin meldet sich und zeigt mir, dass die übrigen Zellen noch geschützt sind. Dass sie aber dennoch etwas eintragen kann:

Zuerst habe ich irritiert geschaut – aber dann bald des Rätsels gefunden: sie hatte einen Bereich freigegeben – das hat Vorrang gegenüber dem Blattschutz:

Selbstgespräche geben einem die Chance, Recht zu behalten.

Das ist mir noch nie aufgefallen. Heute in der VBA-Schulung. Ich gebe als Übung auf zwei Makros zu erstellen: eines soll sämtliche Tabellenblätter schützen, eines soll den Blattschutz aufheben. Ein Teilnehmer testet und bemerkt ein Ruckeln:

Und hier der Code – falls jemand selbst testen möchte. Das Ruckeln erscheint beim Schutzaufheben:

Sub AlleBlätterSchützen()
Dim i As Integer

For i = 1 To ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(i).Protect
Next

End Sub

Sub Blattschutzaufheben()
Dim i As Integer

For i = 1 To ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(i).Unprotect
Next

End Sub

Ich lasse mich zum Pandabären umschulen. Wenn ich faul rumliege und immer dicker werde, finden mich alle niedlich.

Wie hat denn das mein Kollege gemacht? In einer Tabelle befinden sich Formeln. Das Blatt ist nicht geschützt (die Namen darf ich beispielsweise ändern). Versuche ich jedoch die Formel zu ändern, erhalte ich eine Fehlermeldung:

ziemlich cleverer Schutz!

ziemlich cleverer Schutz!

Die Antwort: Die Zellen, in denen sich Formeln befinden, wurden markiert und in der Datenüberprüfung die Formel <>““ eingegeben. So können sie nicht mehr geändert werden:

20161109schutz02

Übrigens: Das Löschen wird allerdings nicht verhindert!

Bis zu meinem fünften Lebensjahr dachte ich, mein Name sei „Nein“.

Ich bin wirklich verblüfft. Wusste nicht, dass es geht:

Man erstellt eine Datenüberprüfung für mehrere Zellen (beispielsweise Zahlen, Datumswerte oder Listen).

Datenüberprüfung (Gültigkeit)

Datenüberprüfung (Gültigkeit)

Diese (und einige anderen Zellen) werden über Zellen formatieren / Schutz „nicht gesperrt“. Das Blatt wird mit einem Blattschutz versehen. Nun ist es für den Anwender möglich, in die freien Zellen etwas einzutragen und diesen Inhalt in die Zellen mit Datenüberprüfung hineinzukopieren.

Das heißt: Das Einfügen von Inhalten unterläuft die Datenüberprüfung. Perfide!

Nix wird geprüft!

Nix wird geprüft!

Danke an Julian für diesen Hinweis.