Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
756to760
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
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Optimierung VBA-Code (For Each...)

Optimierung VBA-Code (For Each...)
21.04.2006 16:52:13
Torsten
Hallo beisammen,
folgenden, funktionierenden Code möchte ich optimieren, weil ich 25 Sheets in den Array aufnehmen muß:
Dim ws
Dim Arr, i%
Dim ZE As Object
Arr = Array("B1", "B2", "B3", "B4", "B5", "B6")
For i = LBound(Arr, 1) To UBound(Arr, 1)
Sheets(Arr(i)).Unprotect Password:="maze"
Next i
With Sheets("B1")
.Range("BUD1").Locked = True
End With
With Sheets("B2")
.Range("BUD1").Locked = True
End With
With Sheets("B3")
.Range("BUD1").Locked = True
End With
With Sheets("B4")
.Range("BUD1").Locked = True
End With
With Sheets("B5")
.Range("BUD1").Locked = True
End With
With Sheets("B6")
.Range("BUD1").Locked = True
End With
Arr = Array("B1", "B2", "B3", "B4", "B5", "B6")
For i = LBound(Arr, 1) To UBound(Arr, 1)
Sheets(Arr(i)).Protect Password:="maze"
Next i
Meine Versuche schlagen jedoch fehl:
...
Arr = Array("B1", "B2", "B3", "B4", "B5", "B6")
For i = LBound(Arr, 1) To UBound(Arr, 1)
For Each Sheet In Array(i)
Sheets(Arr(i)).Unprotect Password:="maze"
Sheets(Arr(i)).Range("BUD1").Locked = True
Sheets(Arr(i)).Protect Password:="maze"
Next i
...
Könnt Ihr mir weiterhelfen?
Vielen Dank im voraus.
Gruß
Torsten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optimierung VBA-Code (For Each...)
21.04.2006 17:18:37
Solaiman
Hallo Torsten,
was ist denn "BUD1"? Ist das ein Bereichsname? Wenn ja, dann gilt dieser Bereichsname für die ganze Mappe, da Bereichsnamen durch die ganzen Arbeitsblätter eindeutig sind!
Gruß
Solaiman
AW: Optimierung VBA-Code (For Each...)
21.04.2006 17:27:51
Torsten
Hallo Solaiman,
vielen Dank für Deine Rückmeldung.
In der Tat, "BUD1" ist ein Bereichsname. Ich habe zunächst Sheet("B1") erstellt und dann kopiert zu den Sheets "B2" bis "B6". Dabei ist der Bereichsname offensichtlich mitkopiert worden. Was tun?
Gruß
Torsten
AW: Optimierung VBA-Code (For Each...)
21.04.2006 17:40:38
Solaiman
Hallo Torsten,
die Bereiche wurden zwar mitkopiert, aber nicht unter dem gleichen Namen!
Mit folgendem Code kannst du dir die Bereichsname anzeigen und löschen:

Sub BereichLoeschen()
Dim Wkb As Workbook
Set Wkb = ActiveWorkbook
Dim Bereich As Name
For Each Bereich In Wkb.Names
MsgBox Bereich.Name
Bereich.Delete
Next Bereich
End Sub

Ansonsten ist dein Code schon richtig.
'-------------------------------------------------------------------

Sub BereichSperren()
Dim Arr As Variant
Dim i As Integer
Arr = Array("B1", "B2", "B3", "B4", "B5", "B6")
For i = LBound(Arr, 1) To UBound(Arr, 1)
With Sheets(Arr(i))
.Unprotect Password:="maze"
.Range("BUD1").Locked = True
.Protect Password:="maze"
End With
Next i
End Sub

'-------------------------------------------------------------------
Gruß Solaiman
Anzeige
AW: Optimierung VBA-Code (For Each...)
21.04.2006 18:31:42
Torsten
Hallo Solaiman,
um nicht mit den Bereichsnamen arbeiten zu müssen, habe ich in den Code nunmehr die echten Ranges eingefügt:
Dim ws
Dim Arr, i%
Dim ZE As Object
Arr = Array("B1", "B2", "B3", "B4", "B5", "B6")
For i = LBound(Arr, 1) To UBound(Arr, 1)
For Each Sheet In Array(i)
Sheets(Arr(i)).Unprotect Password:="maze"
Sheets(Arr(i)).Range("B5:E5").Locked = True
Sheets(Arr(i)).Range("B7:E7").Locked = True
Sheets(Arr(i)).Range("B9:D9").Locked = True
Sheets(Arr(i)).Range("B11:C11").Locked = True
Sheets(Arr(i)).Range("H5").Locked = True
Sheets(Arr(i)).Range("H7").Locked = True
Sheets(Arr(i)).Protect Password:="maze"
Next i
Leider erhalte ich eine Fehlermeldung bei "Next i": Ungültiger Verweis auf Next-Steuervariable. Was ist denn hier noch falsch? hast Du eine Idee?
Gruß
Torsten
Anzeige
AW: Optimierung VBA-Code (For Each...)
21.04.2006 18:42:07
Solaiman
Hallo Torsten,
woher kommt denn auf einmal For Each Sheet In Array(i) her?
Solaiman
AW: Optimierung VBA-Code (For Each...)
21.04.2006 18:42:23
Solaiman
Hallo Torsten,
wo kommt denn auf einmal For Each Sheet In Array(i) her?
Solaiman
erledigt - mT
21.04.2006 18:49:06
Torsten
Nochmals Hallo,
das war ein versuch, der nicht funktionierte.
Aber mit Deiner Hilfe habe ich jetzt den Code hinbekommen:
Application.ScreenUpdating = False
Dim ws
Dim Arr, i%
Dim ZE As Object
Arr = Array("B1", "B2", "B3", "B4", "B5", "B6")
For i = LBound(Arr, 1) To UBound(Arr, 1)
With Sheets(Arr(i))
.Unprotect Password:="maze"
.Range("B5:E5").Locked = True
.Range("B7:E7").Locked = True
.Range("B9:D9").Locked = True
.Range("B11:C11").Locked = True
.Range("H5").Locked = True
.Range("H7").Locked = True
.Protect Password:="maze"
End With
Next i
Application.ScreenUpdating = True
Ich danke Dir für Deine Unterstützung.
Gruß und schönes WE
Torsten
Anzeige
AW: danke für die Rückmeldung!
21.04.2006 19:12:09
Solaiman
Hallo Torsten,
keine Ursache. Danke für die Rückmeldung!
Viele Grüße
und
For Each Tag In Wochenende
Wünsche dir schönen Tag
Next Tag
;-)
Solaiman

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige