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.

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
Antworten 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
Antworten Top
#3
Hallo Udo,

hier dann natürlich:

Code:
Sheets(BlattName).Select


Gruß Werner
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten Top
#10
Hallo Udo,


Code:
ws.Protect EnableSelection = xlUnlockedCells


Gruß Werner
Antworten Top


Gehe zu:


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