Zum sperren bestimmter Zellen, sondern ermöglichen das filtern und Sortieren
Ich bin mit dem folgenden code zu sperren, die Inhalte bestimmter Zellen
Sub LockCell(ws As Worksheet, strCellRng As String)
With ws
.Unprotect
.Cells.Locked = False
.Range(strCellRng).Locked = True
.Protect Contents:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, DrawingObjects:=True
End With
End Sub
Sperrt er die Inhalte von bestimmten Spalten. Das problem ist, können Benutzer keine Art, weder filter, noch die Grenzen zu den Zellen, da diese Excel-Menüpunkte deaktiviert sind.
Ich dachte, die AllowSorting:=True
, AllowFiltering:=True
und DrawingObjects:=True
würde erlauben, dass der gleiche Weg der AllowFormattingColumns:=True
und AllowFormattingRows:=True
erlaubt das ändern der Größe.
- Ich schlage vor, Sie Lesen Sie noch einmal die Excel-Hilfe om
Worksheet Proptect
, particlarly in Bezug auf die Parameter Erlauben wrt geschützt Arbeitsblätter und gesperrte Zellen. AllowSorting: "Jede Zelle im Art-Bereich freigeschaltet werden muss oder nicht" AllowFiltering: "Benutzer ändern können Filterkriterien, können aber nicht aktivieren oder deaktivieren Sie einen auto-filter" - Danke, das ist traurig, aber, denn, ich muss in der Lage sein zu blockieren, einige der Inhalte, aber die Benutzer können Sortieren und filter. Irgendwelche Ideen?
- 1.) stellen Sie sicher, dass Ihre Auswahl nicht zu überschneidungen mit anderen Bereichen. 2.) entsperren Sie alle Zellen auf dem Blatt vor der Anwendung eine Sperre auf Ihrem Bereich. 3.) "Die Zellen, die gefiltert werden müssen freigeschaltet werden, wenn das Arbeitsblatt geschützt ist." ...so einfach nicht schließen diejenigen ein, die " filter-Zellen als Teil Ihres gesperrten Bereich. msdn.microsoft.com/en-us/library/office/ff839866.aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine Reihe von Menschen mit dieser Schwierigkeit. Die vorherrschende Antwort ist, dass Sie nicht schützen können Inhalte Bearbeiten, während so dass ungehindert Sortieren. Ihre Optionen sind:
1) Erlauben die Bearbeitung und Sortierung 🙁
2) Anwenden von Schutz und Schaltflächen erstellen, mit code, um das Sortieren mit VBA. Es gibt andere Beiträge, die erklären, wie dies zu tun. Ich denke, es gibt zwei Methoden, entweder (1) Sie erhalten den code, um den Schutz des Blattes aufheben, die Sortierung angewendet werden soll, dann wieder das Arbeitsblatt schützen, oder (2) das Blatt geschützt, mit
UserInterfaceOnly:=True
.3) Lorie Antwort, die nicht erlauben den Benutzern das auswählen von Zellen (https://stackoverflow.com/a/15390698/269953)
4) Eine Lösung, die ich noch nicht gesehen, diskutiert ist die Verwendung von VBA, einige Basis-Schutz. Zum Beispiel, erkennen und wiederherstellen von änderungen, die mit
Worksheet_Change
. Es ist weit von einer idealen Lösung jedoch.5) Sie halten das Blatt geschützt, wenn der Benutzer die Auswahl der Daten und ungeschützt, wenn der Benutzer die Kopfzeile ausgewählt ist. Dies lässt unzählige Möglichkeiten, wie die Benutzer durcheinanderbringen könnte die Daten zwar auch, dass einige usability-Probleme, aber zumindest reduziert sich die Quote von lästigen Kollegen gedankenlos unerwünschte änderungen vornehmen.
War dies ein großes problem für mich und fand ich folgenden link mit einer relativ einfachen Antwort. Danke Voyager!!!
Beachten Sie, dass ich den Namen der Reihe ich wollte, dass andere in der Lage sein, zu Sortieren
http://answers.yahoo.com/question/index?qid=20090419000032AAs5VRR
Ich kam gerade mit einem kniffligen Weg, um fast die gleiche Funktionalität. Anstelle des Schutzes der Platte die normaler Weise mit einem Ereignishandler, etwas ungeschehen zu machen der Benutzer versucht, zu tun.
Fügen Sie den folgenden, um die worksheet-Modul:
Wenn der Benutzer etwas tut zum ändern einer Zelle, die gesperrt ist, wird die Aktion sofort rückgängig gemacht. Das temporäre deaktivieren der Ereignisse zu halten, ist der Untergang selbst durch das auslösen dieses Ereignisses, die sich in einer unendlichen Schleife.
Sortieren und filtern lösen nicht das Change-Ereignis, so dass diese Funktionen aktiviert bleiben.
Beachten Sie, dass diese Lösung verhindert, dass das ändern oder löschen von Zellinhalt, aber nicht verhindern, dass Formate geändert werden. Ein entschlossener Benutzer könnte es umgehen, indem Sie einfach die Einstellung, die die Zellen entsperrt werden.
locked
Flagge. Dies sollte die Antwort seinHier ist ein Artikel, der erklärt das problem und die Lösung mit viel mehr detail:
Sortierung Gesperrte Zellen im Geschützten Arbeitsblättern
Das, was zu verstehen ist, dass der Zweck der sperren von Zellen ist, um zu verhindern, dass Sie verändert wird, und die Sortierung dauerhaft ändert die Zelle Werte. Sie können ein makro schreiben, aber eine viel bessere Lösung ist die Verwendung der "Benutzerberechtigungen zum Bearbeiten von Bereichen" - Funktion. Das macht die Zellen editierbar, so dass die Sortierung funktionieren kann, aber da die Zellen noch technisch gesperrt, Sie können verhindern, dass Benutzer aus der Auswahl.
Lorie s Antwort ist gut, aber wenn ein Benutzer wählt einen Bereich aus, der enthält gesperrte und nicht gesperrte Zellen, die Daten in der gesperrten/geschützten Zellen gelöscht werden kann.
Isaac ' s Antwort ist Super, aber funktioniert nicht, wenn der Benutzer markiert einen Bereich, der sowohl einen gesperrten und nicht gesperrten Zellen.
Ich veränderte Isaaks-code ein bisschen, bis die änderungen rückgängig machen, wenn eine der Zellen in der Ziel-range sind gesperrt. Es zeigt auch eine Meldung, die erklärt, warum die Aktion wurde rückgängig gemacht. Kombiniert mit Lorie Antwort, ich war in der Lage, das gewünschte Ergebnis zu erzielen, in der Lage zu Sortieren/filtern einer geschützten Blatt, während immer noch so dass der Benutzer änderungen an einer ungeschützten Zelle.
Folgen Sie den Anweisungen in Lorie Antwort, dann legte Sie den folgenden code in das worksheet-Modul:
Wenn die autofiltering ist Teil von eine Unterroutine in operation, Sie könnte verwenden
kurz den Schutz des Blattes aufheben, filtern Sie die Zellen, und danach erneut schützen.
Ich weiß, das ist super alt, aber kommt immer wenn ich google dieses Problem. Sie können den Schutz aufheben der Auswahl wie in der oben genannten Zellen und fügen Sie dann Daten-Validierung, um die ungeschützten Zellen Referenz etwas unerhört wie "423fdgfdsg3254fer" und dann, wenn Benutzer versuchen, Bearbeiten Sie die Zellen, Sie werden nicht in der Lage, aber du bist Sortieren und filtern funktioniert jetzt.
Dies ist eine sehr alte, aber immer noch sehr nützlichen thread. Ich kam hier vor kurzem mit dem gleichen Problem. Ich schlage vor, schützt das Blatt, wenn geeignete und aufheben des Schutzes ist es, wenn die filter-Zeile (z.B. Zeile 1) ausgewählt ist. Meine Lösung, nicht mit Passwort - Schutz, ich brauche es nicht (eine Schutzmaßnahme, nicht ein Sicherheits-feature). Ich kann nicht finden, einen event-handler erkennt, dass die Auswahl der filter-Taste - also gab ich die Anweisung, meine Benutzer wählen Sie zuerst den filter Zelle, klicken Sie dann auf die Schaltfläche filter. Hier ist, was ich befürworten, (ich nur ändern Schutz, wenn es geändert werden muss, kann oder nicht, Zeit zu sparen - ich weiß es nicht, aber es "fühlt" rechts):
In Excel 2007, entsperren Sie die Zellen, die Sie wollen, geben Sie Ihre Daten in. Gehen Sie zur Überprüfung
Kein VB erforderlich