Microsoft Excel

Herbers Excel/VBA-Archiv

trotz Schutz zellen einblenden und gliederung | Herbers Excel-Forum


Betrifft: trotz Schutz zellen einblenden und gliederung von: Florian
Geschrieben am: 13.02.2012 14:05:18

Hallo,

ich habe folgendes Problem:

In meinem Sheet "Eingabe" wollte ich gern den Blattschutz anwenden und trotzdem die Gliederungsfunktion nutzen. Darum habe ich mit Hilfe der Suchfunktion hier im Forum diesen Code mir nun erlesen und erstellt:

Private Sub Workbook_Open()
With Sheets("Eingabe")
    .Protect Contents:=True, userinterfaceonly:=True
    .EnableOutlining = True
End With
 
End Sub
Gliederung funktioniert super, nur gibts noch ein Problem!
Da ich viele Zeilen aus- und einblende, wenn z.b. eine ComboBox mit einem bestimmten Ergebnis ausgewählt wird, mekert der Debugger, dass das nicht möglich ist, weil das Blatt geschützt ist.

Bevor ich die Suche hier im Form nach "Gliederung + Blattschutz" begonnen hatte, stellte ich beim Blattschutz (manuell) immer ein: "Zeilen einfügen erlauben". Damit war das kein Problem, per ComboBox-Auswahl Zellen ein- oder auszublenden.

Nachdem ich aber nun den obigen Code wieder gelöscht hatte, lässt sich der Schutz nicht mehr aufheben (auch wenn ich ihn manuell aufhebe, kommt die Fehlermeldung, sobald eine ComboBox eine Zelle ein- ausblenden will, es sei ein Blattschutz vorhanden)!!!

!!! HILFE !!!

Wie bekomme ich jeglichen Schutz wieder raus (obwohl der Schutz laut Menü: "Überprüfen"->"Änderungen"->"Blatt schützen" nicht aktiv ist), bzw. wie bekomme ich es hin, dass das Sheet geschützt ist, aber trotzdem "Gliederungsfunktion" und "Zeilen einfügen" erlaubt ist?!?

Tausend Dank allen Helfern vorab!
Gruß, Flo

  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Florian
Geschrieben am: 13.02.2012 14:16:06

So... jetzt hab ich einen Code gefunden, mit dem ich zumindest den Schutz aufheben kann (obwohl, wie vorher schon beschrieben, kein Schutz aktiv ist!):

Sub Schutz_Entfernen()
For Each objWs In ThisWorkbook.Worksheets
     objWs.UnProtect
  Next
End Sub
Aber wie kriegt man "Zeilen einfügen erlauben" in den vorher genannten Code mit rein?
Private Sub Workbook_Open()
With Sheets("Eingabe")
    .Protect Contents:=True, userinterfaceonly:=True
    .EnableOutlining = True
End With
 
End Sub
???


  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Oberschlumpf
Geschrieben am: 13.02.2012 15:15:41

Hi Florian

Was spricht denn dagegen, ...

... wenn du vor jedem Zeilen einfügen/löschen/aus-einblenden per VBA den Blattschutz de-aktivierst, und wenn Zeilenmanipulation erfolgt, dann per VBA den Blattschutz wieder aktivierst?

Es würde ja reichen, wenn du eine Sub schreibst, die einen Parameter erwartet. Mit dem Parameter "sagst" du dann dem Makro, ob de- oder aktiv.

Ciao
Thorsten


  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Florian
Geschrieben am: 13.02.2012 15:21:45

Hi Thorsten...

das ist richtig... ich hab das so auch schon einmal bei einer anderen Datei gemacht, um alle Leerzeilen auszublenden, bevor eine PDF erstellt wird.

Hab das mit so ner Art Dual-System gemacht und immer rechts neben die Felder 1 oder 0 per wenn-Formel gesetzt, damit dann VBA entsprechnd alle Zeilen mit 1 in Reihe X ausblendet...

Da könnte man in Kombination noch den Schutz jedes Mal weg und wieder hinzu nehmen..!


Ich dachte nur, es gibt einfach auch einen VBA Befehl für "Zeilen einfügen" oder "Zeilen formatieren" erlauben, wie in der manuellen Auswahl "Blatt schützen"?!

Das wäre bei so vielen Daten erheblich leichter und zeitlich nicht so intensiv!!!
Gruß°


  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: fcs
Geschrieben am: 14.02.2012 09:11:50

Hallo Florian,

die verschiedenen Optionen, die manuell gesetzt werden können, kann man auch per Makro setzen.

Ein eingerichteter Autofilter oder eine eingerichtete Gliederung müssen aber zusätzlich aktiviert werden, was nur per Makro möglich ist.

Gruß
Franz

Beispiel:

Sub Blattschutz_Ein()
'
  Dim wks As Worksheet
'
  Set wks = ActiveSheet
  wks.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True _
        , AllowFormattingRows:=True, AllowInsertingRows:=True, AllowSorting:=False _
        , AllowFiltering:=True, userinterfaceonly:=True
  wks.EnableOutlining = True
  wks.EnableAutoFilter = True
End Sub

Sub Blattschutz_Aus()
  Dim wks As Worksheet
  Set wks = ActiveSheet
  wks.Unprotect
End Sub



  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Florian
Geschrieben am: 14.02.2012 09:14:50

Super Franz, das war genau das, wonach ich gesucht habe!!!

Also kann ich für das Gruppieren "EnableOutlining = True" verwenden, und für Zeilen einfügen "AllowInsertingRows:=True" ... sehr gut!

Besten Dank und viele Grüße, Florian


  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Florian
Geschrieben am: 14.02.2012 11:31:40

Noch eine Frage:

Wie kann ich das ganze noch mit einem Password versehen?

Wenn ich meine Datei mit folgendem Code öffne, reicht nur ein Klick auf "Blattschutz aufheben" und es kommt keine Passwortabfrage:

Private Sub Workbook_Open()
With Sheets("Eingabe")
    .Protect Password:=123, UserInterfaceOnly:=True
    .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingRows:=True,  _
AllowInsertingRows:=True
    .EnableOutlining = True
End With
With Sheets("Vollkosten")
    .Protect Password:=123, UserInterfaceOnly:=True
    .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingRows:=True,  _
AllowInsertingRows:=True
    .EnableOutlining = True
    .Rows("1:393").EntireRow.Hidden = False
End With
With Sheets("Vollkosten (nur fix)")
    .Protect Password:=123, UserInterfaceOnly:=True
    .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingRows:=True,  _
AllowInsertingRows:=True
    .EnableOutlining = True
    .Rows("1:393").EntireRow.Hidden = False
End With
With Sheets("Grenzkosten")
    .Protect Password:=123, UserInterfaceOnly:=True
    .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingRows:=True,  _
AllowInsertingRows:=True
    .EnableOutlining = True
    .Rows("1:250").EntireRow.Hidden = False
End With
With Sheets("Preiszusammenstellung 1")
    .Protect Password:=123, UserInterfaceOnly:=True
    .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingRows:=True,  _
AllowInsertingRows:=True
    .EnableOutlining = True
    .Rows("1:102").EntireRow.Hidden = False
End With

End Sub



  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Detlef
Geschrieben am: 14.02.2012 22:42:54

Hallo Florian,

ergänze:

wks.Protect Password:=123,

Gruß Detlef


  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Florian
Geschrieben am: 15.02.2012 08:51:30

Hallo Detlef,

vielen Dank für den Tipp, jedoch kommt jetzt die Fehlermeldung "Objekt erforderlich"...?!
Gruß, Florian


  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Detlef
Geschrieben am: 15.02.2012 11:12:53

Hallo Florian,

so muß es aussehen.

Sub Blattschutz_Ein()
'
  Dim wks As Worksheet
'
  Set wks = ActiveSheet
  wks.Protect Password:=123, DrawingObjects:=False, Contents:=True, Scenarios:=True _
        , AllowFormattingRows:=True, AllowInsertingRows:=True, AllowSorting:=False _
        , AllowFiltering:=True, userinterfaceonly:=True
  wks.EnableOutlining = True
  wks.EnableAutoFilter = True
End Sub

Sub Blattschutz_Aus()
  Dim wks As Worksheet
  Set wks = ActiveSheet
  wks.Unprotect Password:=123
End Sub

Gruß Detlef


  

Betrifft: AW: trotz Schutz zellen einblenden und gliederung von: Florian
Geschrieben am: 15.02.2012 11:13:53

Danke Detlef, probier es dann gleich mal aus! Gruß, Florian


Beiträge aus den Excel-Beispielen zum Thema "trotz Schutz zellen einblenden und gliederung"