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
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


Hi,
ich Versuch eine Summenformel
=SUMME(A3:A29)
verzweifelt über VBA dynamisch einzutragen.
Die Summe muss von A bis J eingetragen werden. Jedesmal mit dem entpsrechenden Buchstaben nicht immer mit A.
Hab das so versucht:
For k = 2 To 10 'Range(Cells(k, 29), Cells(...
Anzeige

Hallo,
Ich bin auf der Suche nach einer Excel-Funktion oder einem Makro, welches es mir ermöglicht, eine variable Anzahl Zeilen (mit definiertem Inhalt in der letzten Zeile) in ein neues Arbeitsblatt zu kopieren.

Hallo Forum,
ich habe ein kleines Problem in meinem Makro.
Ich möchte eine Range abbilden, leider überträgt das Makro aber immer nur die Zeile 6.
For i = 2 To 256
If Cells(3, i).Value = datum Then
Range(Cells(6, i), Cells(40, i)).Copy
Selection.Copy
Cells(6, i + 1)...
Anzeige

Hallo
Ich wollte die selection.Range einer variablen zuweisen, damit ich danach die selection verändern kann und trotzdem noch weiss, was vorher selectiert war.
Ich habe schon folgende Varianten versucht:
Dim r As Range r = selection.Range ''Fehlermeldung r = Range(Cells(selection...

Hi,
folgendes Problem
In Zelle C1 steht der aktuelle Monat. Nun möchte ich die Datei als PDF abspeichern:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"G:\Dokumente\Berichtswesen\Monatsreporting\02 Februar\Test.pdf" _
, Quality:=xlQualityStandard, IncludeDo...

Hallo Leute,
In meiner Arbeitsmappe kopiere ich eine! Zeile (aus dem TabBlatt „Grundformular“) - via Doppelklick auf einen Namen in „Übersicht“ - in andere TabBlätter.
(das geht wunderbar)
Sieht jemand eine Möglichkeit ob/wie das ganze mit einer variablen Zeilenanzahl, die im „Grund...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige