Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
Inhaltsverzeichnis

Blattschutz und Bereiche bearbeiten

Blattschutz und Bereiche bearbeiten
01.01.2023 19:08:54
Olaf
Guten Abend,
ich bin gerade dabei das Makro mit dem Blattschutz zu erweitern.
Das Makro Blattschutz für mehrere Tabellen funzt prima.
Ich möchte jetzt mehrere Bereiche / Tabelle per Makro hinzufügen die jeder bearbeiten darf.
Die Bereiche auf jeder Tabelle sind gleich.
Wie bekomme ich die mehreren Bereiche in der Schleife abgefangen die vom Blattschutz ausgenommen sind?
Meine bisherhige Lösung für einen Bereich funzt. Nur wie bekomme ich die restlichen mit eingebunden in die Schleife?

Option Explicit
Sub Makro1()
' Makro1 Makro
Dim ws As Integer
Dim Bereich1 As Range
Set Bereich1 = Tabelle1.Range("A1:B2")
Set Bereich2 = Tabelle1.Range("A11:B12")
Application.ScreenUpdating = False
For ws = 1 To 2
Tabelle1.Range("A1:B2").Select
Selection.Locked = False
With Worksheets(ws)
.Protect Password:="", _
DrawingObjects:=False, _
Contents:=True, _
Scenarios:=False, _
AllowFormattingCells:=True, _
AllowFormattingColumns:=True, _
AllowFormattingRows:=True, _
AllowInsertingColumns:=True, _
AllowInsertingRows:=True, _
AllowInsertingHyperlinks:=True, _
AllowDeletingColumns:=True, _
AllowDeletingRows:=True, _
AllowSorting:=True, _
AllowFiltering:=True, _
AllowUsingPivotTables:=True
End With
Next ws
Application.ScreenUpdating = True
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz und Bereiche bearbeiten
01.01.2023 20:37:33
onur
? Schleife?
Warum nicht einfach
Bereich1.Locked=false
Bereich2.Locked=false
AW: Blattschutz und Bereiche bearbeiten
02.01.2023 00:31:22
Olaf
Danke für die Hilfe,
ich hatte noch ein paar Denkfehler die jetzt beseitigt sind.
Der funktionierende code lautet:

Sub Blattschutz_setzen()
Dim ws As Integer
Dim Spalte As Long
Application.ScreenUpdating = False
For ws = 1 To 12
If ws = 1 Or ws = 3 Or ws = 5 Or ws = 7 Or ws = 8 Or ws = 10 Then
Spalte = 33
ElseIf ws = 4 Or ws = 6 Or ws = 9 Or ws = 11 Then
Spalte = 32
ElseIf ws = 2 Then
Spalte = 31
ElseIf ws = 12 Then
Spalte = 34
End If
With Worksheets(ws)
.Select
.Unprotect Password:=""
Range(Cells(5, 3), Cells(40, Spalte)).Locked = False
.Protect Password:="", _
DrawingObjects:=False, _
Contents:=True, _
Scenarios:=False, _
AllowFormattingCells:=True, _
AllowFormattingColumns:=True, _
AllowFormattingRows:=True, _
AllowInsertingColumns:=True, _
AllowInsertingRows:=True, _
AllowInsertingHyperlinks:=True, _
AllowDeletingColumns:=True, _
AllowDeletingRows:=True, _
AllowSorting:=True, _
AllowFiltering:=True, _
AllowUsingPivotTables:=True
End With
Next ws
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Blattschutz und Bereiche bearbeiten
02.01.2023 10:30:16
onur
Und wozu brauchst du
Application.ScreenUpdating = False
und
Application.ScreenUpdating = True
?
Völlig überflüssig.
AW: Blattschutz und Bereiche bearbeiten
02.01.2023 11:00:03
Olaf
Richtig dafür benötige ich es nicht, hab ich mir jedoch angwöhnt generell mit in die Scripte zu packen, es schadet nix.
Genauso wie Option Explicit was hier jetzt nicht aufgeführt ist.
AW: Blattschutz und Bereiche bearbeiten
02.01.2023 11:07:45
onur
"Option Explicit" ist wichtig - gerade für Anfänger - da es dich dazu zwingt, Variablen korrekt zu deklarieren. Aber das wird AUTOMATISCH von VBA gesetzt, wenn das in den Optionen so eingestellt ist.
Aber in jedem Makro prinzipiell "Application.ScreenUpdating = False " usw zu benutzen ist Blödsinn. Es schadet ja auch nicht, IMMER mit Motorradhelm herumzulaufen, selbst im Bett, wäre aber hirnrissig - oder?
Anzeige
AW: Blattschutz und Bereiche bearbeiten
02.01.2023 11:22:07
Olaf
Ja richtig :-)
AW: Blattschutz und Bereiche bearbeiten
02.01.2023 11:37:58
GerdL
Moin

Sub Blattschutz_setzen()
Dim i As Integer, Spalte As Long
For i = 1 To 12
With ThisWorkbook.Worksheets(i)
Select Case .Index
Case 1, 3, 5, 7, 8, 10: Spalte = 33
Case 4, 6, ß, 11: Spalte = 32
Case 2: Spalte = 31
Case 12: Spalte = 34
End Select
.Unprotect Password:=""
.Range(.Cells(5, 3), .Cells(40, Spalte)).Locked = False
.Protect Password:="", _
DrawingObjects:=False, _
Contents:=True, _
Scenarios:=False, _
AllowFormattingCells:=True, _
AllowFormattingColumns:=True, _
AllowFormattingRows:=True, _
AllowInsertingColumns:=True, _
AllowInsertingRows:=True, _
AllowInsertingHyperlinks:=True, _
AllowDeletingColumns:=True, _
AllowDeletingRows:=True, _
AllowSorting:=True, _
AllowFiltering:=True, _
AllowUsingPivotTables:=True
.Protect Password:=""
End With
Next i
End Sub
Gruß Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige