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.

Sortieren mit Blattschutz
#1
Hallo zusammen,

ich bin durch diesen Thread auf das Forum gestoßen und hoffe, ihr könnt mir weiterhelfen.

In meiner Tabelle habe ich die oberste Zeile und die ersten paar Spalten fixiert. Hier stehen die Kategorien, die von den späteren Benutzern nicht verändert werden sollen. 
Ab Spalte M startet der Zellbereich in dem Eintragungen möglich sind. Damit jeder Benutzer die für ihn relevanten Zeilen findet, soll das Sortieren und Filtern der Liste trotz Blattschutz möglich sein.

Gelöst habe ich die Sache bisher wie folgt:
Code:
Sub Workbook_Open()
   With Sheets("Tab1")
     .Protect userinterfaceonly:=True
     .EnableOutlining = True
     .EnableAutoFilter = True
   End With
   With Sheets("Tab2")
     .Protect userinterfaceonly:=True
     .EnableOutlining = True
     .EnableAutoFilter = True
   End With
End Sub
Damit funktioniert der Autofilter und die Gruppierungen.

Für mich ergeben sich jetzt leider 2 Probleme:
  1.  Der Code erlaubt keine Sortierung. Gibt es eine Möglichkeit, den obigen Code so zu erweitern, dass ein Sortieren möglich ist? Im oben genannten Thread wird das per Button und Aufrufen des Sortieren-Dialogs gelöst - das ist für meine Liste aber nicht praktikabel (Code habe ich unten nochmal rauskopiert).
  2.  Wenn möglich, möchte ich das Filtern & Sortieren nur in den Spalten A-L erlauben. Wenn ich den Autofilter nur auf diese Spalten anwende, wird der hintere Bereich aber nicht mehr mitsortiert. Kann man das irgendwo definieren, dass immer die komplette Zeile mitverschoben wird, auch wenn nur "vorne" umsortiert wird?
Danke im Voraus


Code aus dem Thread mit dem Button:
Code:
Private Sub cmdAufhebenSortieren_Click()
   cmdAufhebenSortieren.BackColor = 255                                         'setzt die Hintergrundfarbe des Buttons auf Rot
       With ActiveSheet                                                         'mache im aktiven Arbeitsblatt folgendes:
           .Unprotect                                                           'Blattschutz aufhebe
           CommandBars(1).Controls("Daten").Controls("Sortieren...").Execute    'Sortiermen? ?ffnen
           .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
           , AllowSorting:=True, AllowFiltering:=True                           'nach Schlie?en des Men?s Arbeitsblatt sch?tzen
       End With                                                                 'Ende der Arbeiten im aktiven Arbeitsblatt
   cmdAufhebenSortieren.BackColor = 52377                                       'setzt die Hintergrundfarbe des Buttons auf Gr?n
End Sub
Antworten Top
#2
Hallo,

Nicht, dass wir aneinander vorbeischreiben ... du meinst schon das normale Sortieren ... und nicht das sortieren über den Autofilter ?

Warum schaust du dir nicht einfach mal die 'Worksheet.Protect-Methode' in der Hilfe an ?
Du könntest auch einfach mal den Makro-Rekorder starten ...
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#3
Hallo,

das hätte ich vielleicht dazu schreiben sollen, stimmt. Ich meine die Sortierfunktion über das Menü beim Autofilter.
Antworten Top
#4
Hallo,

um in 2016 das Sortieren des AutoFilters in einem geschützten Blatt verwenden zu können, muss du zuerst in "Überprüfen" --> "Schützen" --> "Bearbeiten von Bereichen Zulassen" den Bereich deines Autofilters eingeben.
Eventuelle Berechtigungen nicht vergessen. Erst danach den Button Blattschutz klicken und sowohl 'Autofilter verwenden' als auch 'Sortieren' anhaken.

Erst dann kannst du in dem angegebenen Bereich ... und nur dort ... den Autofilter und das Sortieren verwenden. Das normale Sortieren über das Menuband sollte dann natürlich auch funktionieren.

Den Vorgang mit dem Makro-Rekorder aufzeichnen und in deinen Code integrieren kriegst du hin ?
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#5
Hallo,

vielen Dank für den Hinweis. Mit dem "Bearbeiten von Bereichen zulassen …" habe ich bisher nie gearbeitet - und bin ehrlich gesagt auch überfordert was ich bei Berechtigungen hinterlegen muss oder ob ich das einfach ignorieren kann. Die Liste soll später in einem anderen Firmennetzwerk benutzt werden, von daher habe ich keine Ahnung welche Rollen schlussendlich darauf zugreifen müssen.

Über den Makrorecorder habe ich mir folgendes aufzeichnen lassen:
Code:
ActiveSheet.Protection.AllowEditRanges.Add Title:="Tab1", Range:=Columns _
       ("A:AP")
   ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
       , AllowSorting:=True, AllowFiltering:=True


Bei der Integration in meinen Code habe ich allerdings nichts lauffähiges produzieren können. Wäre nett, wenn Du mir da weiterhelfen könntest.
Antworten Top
#6
Hallo,

so klappt es bei mir ...

Code:
Sub PSEUDOSCHUTZ()
With Sheets("Tabelle1") '<-- anpassen
   .Protection.AllowEditRanges.Add Title:="Tab1", Range:=Columns("A:AP")
   .Protect userinterfaceonly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
       AllowSorting:=True, AllowFiltering:=True
End With
With Sheets("Tabelle2") '<-- anpassen
   .Protection.AllowEditRanges.Add Title:="Tab1", Range:=Columns("A:AP")
   .Protect userinterfaceonly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
       AllowSorting:=True, AllowFiltering:=True
  End With
End Sub
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#7
Danke für deinen Code. Genau so hatte ich es auch schon kombiniert und zur Sicherheit habe ich es auch mit deinem Code nochmal probiert - aber bei mir kommt da immer der Laufzeitfehler 1004.
Der Debugger bleibt in der ".protection"-Zeile stehen. Das "Tab1" habe ich schon durch den Namen des entsprechenden Registerblatts ersetzt. Weiss nicht, was sonst der Auslöser sein könnte.

Muss dazu im Blatt selber noch irgendetwas vorbereitet werden? Zellen (ent-)sperren oä?
Antworten Top
#8
Ich habe in der Originaldatei den Code so angepasst, dass er funktioniert, dann gespeichert und von der Datei eine Kopie gezogen.
In der Kopie tat der Code auch noch - allerdings kommt nach Anpassung einer bereits vorhandenen bed. Formatierung jetzt wieder der 1004er und ich bin ratlos warum …
Antworten Top
#9
... und jetzt funktioniert es auch in der anderen Dateiversion nicht mehr.

Code:
With Sheets("Tabelle1")
  .Protection.AllowEditRanges.Add Title:="Tab1", Range:=Columns("A:AP")
  .Protect userinterfaceonly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
      AllowSorting:=True, AllowFiltering:=True
End With
With Sheets("Tabelle2")
  .Protection.AllowEditRanges.Add Title:="Tab2", Range:=Columns("A:ACM")
  .Protect userinterfaceonly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
      AllowSorting:=True, AllowFiltering:=True
End With

Angepasst habe ich "Tabelle1"/"Tabelle2", "Tab1"/"Tab2" und die Range.

Je nachdem ob ich "TabelleX" schreibe oder den Namen des Blattes verwende, bleibt der Debugger meistens in der (hier) zweiten Zeile hängen. Manchmal läuft er aber auch durch den ersten Teil komplett durch und hängt dann erst bei "with Sheets("Tabelle2")" hängen...
Antworten Top
#10
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.

Gruß,
steve1da
Antworten Top


Gehe zu:


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