Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
500to504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
500to504
500to504
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Unprotect - Protect aller Tabellen gleichzeitig

Unprotect - Protect aller Tabellen gleichzeitig
18.10.2004 12:40:20
Klaus
Hallo zusammen,
meine Arbeitsmappe besteht aus insgesamt 6 Tabellen (PK, POK, PHK A11, ...).
Die dort eingetragenen Kollegen gehören verschiedenen Abteilungen an.
Über eine "InputBox" kann eine bestimmte Abteilung ausgewählt und eine entsprechend gefilterte neue Mappe erstellt werden.
Das Problem ist jedoch, dass bestimmte Spalten der einzelnen Tabellen geschützt sind.
Kann mir bitte jemand auf die Sprünge helfen, wie ich beim Ausführen des nachstehenden Codes den Blattschutz kurzfristig aufheben und danach wieder aktivieren kann.
Das hier funktioniert leider nicht:
Sheets(Array("PK", "POK", "PHK A11", "PHK A12", "EPHK", "POK §14")).Unprotect Password:="......."
Vielen Dank für angedachte Hilfe.

Sub Export3()
Dim WS
Dim i, Abt
Dim Spalte As Byte
'Hier sind auf jeden Fall Anpassungen notwendig
Spalte = 5 'in dieser Spalte ist die Abteilung
'Abteilung erfragen
Abt = InputBox("Für welche Dienststelle soll eine neue Mappe erstellt werden? Bitte genaue Schreibweise beachten!")
If Abt = "" Then Exit Sub
Sheets(Array("PK", "POK", "PHK A11", "PHK A12", "EPHK", "POK §14")).Unprotect Password:="......."
Sheets(Array("PK", "POK", "PHK A11", "PHK A12", "EPHK", "POK §14")).Copy
For Each WS In ActiveWorkbook.Worksheets
'Zeilen mit falscher Abteilung Inhalt löschen
For i = WS.Cells(Rows.Count, 1).End(xlUp).Row To 16 Step -1
If WS.Cells(i, Spalte) <> Abt Then WS.Rows(i) = ""
Next i
For Each sh In WS.Shapes
sh.Delete
Next sh
Next WS
Range("B16:W215").Select
Selection.Sort Key1:=Range("C16:C215"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=-6
ActiveWindow.ScrollRow = 16
Range("A16").Select
Sheets("POK").Select
Range("B16:W215").Select
Selection.Sort Key1:=Range("C16:C215"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.ScrollRow = 16
Range("A16").Select
Sheets("PHK A11").Select
Range("B16:W215").Select
Selection.Sort Key1:=Range("C16:C215"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=-4
ActiveWindow.ScrollRow = 16
Range("A16").Select
Sheets("PHK A12").Select
Range("B16:W215").Select
Selection.Sort Key1:=Range("C16:C215"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=-4
ActiveWindow.ScrollRow = 16
Range("A16").Select
Sheets("EPHK").Select
Range("B16:W215").Select
Selection.Sort Key1:=Range("C16:C215"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=-4
ActiveWindow.ScrollRow = 16
Range("A16").Select
Sheets("POK §14").Select
Range("B16:W215").Select
Selection.Sort Key1:=Range("C16:C215"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.ScrollRow = 16
Range("A16").Select
Sheets(Array("PK", "POK", "PHK A11", "PHK A12", "EPHK", "POK §14")).Select
Sheets("PK").Activate
Range("A16:A215").Select
Selection.ClearContents
ActiveWindow.ScrollRow = 16
Range("A16").Select
ActiveCell.FormulaR1C1 = "1"
Range("A17").Select
ActiveCell.FormulaR1C1 = "2"
Range("A16:A17").Select
Selection.AutoFill Destination:=Range("A16:A215"), Type:=xlFillDefault
Range("A16:A215").Select
ActiveWindow.ScrollRow = 16
Range("A16").Select
Sheets("PK").Select
Sheets(Array("PK", "POK", "PHK A11", "PHK A12", "EPHK", "POK §14")).Protect Password:="......"
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Array durchlaufen
Galenzo
Hallo,
versuch's mal derart:
&ltpre&gt
Private Sub CommandButton1_Click()
Dim arr, a
arr = Array("Tabelle1", "Tabelle2")
For Each a In arr
Sheets(a).Protect
Next
End Sub&lt/pre&gt
Viel Erfolg!
AW: Array durchlaufen
Klaus
Hallo Galenzo,
funktioniert im Prinzip schon. Jedoch sollten die einzelnen Tabellen der Grundmappe danach auch wieder geschützt werden. Mit nachstehendem Code, der zwar jetzt eine andere Funktion ausführt, wird aber die neu erzeugte Arbeitsmappe geschützt.
Kannst du mir da evtl. noch einmal weiterhelfen?

Private Sub CommandButton4_Click()
Dim arr, a
arr = Array("PK", "POK", "PHK A11", "PHK A12", "EPHK", "POK §14")
For Each a In arr
Sheets(a).Unprotect
Next
Call Export("m", "") ' männlich, vollzeit
For Each a In arr
Sheets(a).Protect
Next
End Sub

Vielen Dank
Klaus W.
Anzeige
AW: Array durchlaufen
Galenzo
ja - und das funktioniert nicht?
Sollte doch gehn - die erste Schleife UNPROTECTet und die zweite PROTECTet dann wieder.
Liegt's am PROTECT? Schau mal in die Hilfe, um die Parameter richtig anzugeben.
Viel Erfolg!
AW: Array durchlaufen
Klaus
Wie gesagt, es wird die neu erzeugte Mappe geschützt. Der Befehlt Sheets(a).Protect bezieht sich ja meines Wissens auf die aktuell geöffnete Mappe. Somit ergibt sich der Effekt, dass der Schutz der Grundmappe zwar aufgehoben, jedoch nach Erzeugung der neuen Mappe nicht wieder rückgängig gemacht wird. Wie kann ich denn mit dem Befehl "Protect" eine ganz bestimmte Mappe ansprechen?
mfg Klaus W.
Anzeige
AW: Array durchlaufen
Galenzo
dann müßtest du zusätzlich noch die "workbooks" durchlaufen.
bzw. mit Workbook("Name_der_Mappe") direkt ansprechen.
z.B.:
Workbooks("Mappe1").Sheets("Tabelle1").Protect
Viel Erfolg!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige