Mehrere Tabellenblätter mit Makro schützen funktioniert nur teilweise
#1
Hallo zusammen,
ich habe eine Exceldatei welche ursprünglich aus 15 Tabellenblättern bestand. Um die Tabellenblätter, bzw. die in den Blättern geschützten Zellen, alle gleichzeitig zu schützen habe ich folgendes Makro verwendet:


Sub AlleBlaetter_Schuetzen()
Dim s
Dim Name As Variant
Name = ActiveSheet.Name
Application.ScreenUpdating = False
For s = 1 To Sheets.Count
Sheets(s).Select
ActiveSheet.Protect
Next s
Sheets(Name).Select
Application.ScreenUpdating = True
End Sub


Das funktionierte auch einwandfrei.
Nun habe ich noch 11 Tabellenblätter hinzugefügt.
Leider werden beim ausführen des Makros nur die ursprünglichen 15 Tabellenblätter geschützt.
Ich habe schon versucht das Makro zu löschen und dieses durch das selbe und auch ähnlich geschriebene Makros welche ich im Netz fand zu ersetzen.
Es ist aber nach wie vor so das nur die ursprünglichen 15 Tabellenblätter geschützt werden.
Es wäre klasse wenn mir einer von Euch auf die Sprünge helfen könnte und mir sagen kann was ich falsch mache, bzw. wo der Fehler liegt.

Gruss Udo
Top
#2
Hallo Udo,

so:

Code:
Sub AlleBlaetter_Schuetzen()
Dim ws As Worksheet, BlattName As String

Application.ScreenUpdating = False

BlattName = ActiveSheet.Name

For Each ws In ThisWorkbook.Worksheets
   ws.Protect
Next ws

Sheets(Name).Select

Application.ScreenUpdating = True
End Sub
Gruß Werner
Top
#3
Hallo Udo,

hier dann natürlich:

Code:
Sheets(BlattName).Select


Gruß Werner
Top
#4
Hallo Werner,
vielen Dank schon mal für Deine schnelle Hilfe.

Ich blicke im Moment nicht so ganz durch was Du mit "hier natürlich  "Sheets(BlattName).Select"" meinst? 
Wo oder anstatt welcher Zeile muss ich das einfügen?

Gruss

Udo
Top
#5
Hallo Udo,

noch mal der komplette Code:

Code:
Sub AlleBlaetter_Schuetzen()
Dim ws As Worksheet, BlattName As String

Application.ScreenUpdating = False

BlattName = ActiveSheet.Name

For Each ws In ThisWorkbook.Worksheets
  ws.Protect
Next ws

Sheets(BlattName).Select

Application.ScreenUpdating = True
End Sub


Gruß Werner
Top
#6
Hallo zusammen

warum geht ihr den Weg über die Blattnamen?
Zitat:[...]Um die Tabellenblätter, bzw. die in den Blättern geschützten Zellen, alle gleichzeitig zu schützen[...]

Der 5-Zeiler reicht doch völlig:
Code:
Sub schutz()
For Each Worksheet In ThisWorkbook.Worksheets
   Worksheet.Protect
Next
End Sub
Top
#7
Hallo Wastl,

geh ich doch gar nicht.

Das mit dem Blattnamen habe ich nur drin weil es vorher schon drin war und unwissend, ob der TE das tatsächlich braucht. Wobei ich davon ausgehe, wohl eher nicht. Dürfte wohl der "Selectiererei" geschuldet gewesen sein.

Gruß Werner
Top
#8
Hallo Werner,
das funktioniert so weit klasse. Vielen Dank dafür!!!

Das einzige Manko liegt im Unterschied zu meinem bisherigen Makro darin, das jetzt nach dem Schutz der Tabellenblätter die gesperrten Zellen ausgewählt werden können. 
Vorher war es so, das die gesperrten Zellen nicht angewählt werden konnten. 
Lässt sich auch das noch ohne große Probleme ändern oder in das von Dir gepostete Makro einbauen??

Gruss  Udo
Top
#9
Hallo Wastl,
ich habe gerade erst Deinen Post gesehen. Das funktioniert für meine Bedürfnisse ebenso einwandfrei. VIELEN DANK für den Tipp.

Leider ist es auch hier so, das im Gegensatz zu meinem ursprünglichen Makro gesperrte Zellen ausgewählt werden können. Es wäre prima, wenn das nicht so wäre.

Gruss

Udo
Top
#10
Hallo Udo,


Code:
ws.Protect EnableSelection = xlUnlockedCells


Gruß Werner
Top


Gehe zu:


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