For...Next-Schleife durch Array klemmt
27.08.2016 20:25:11
Volker
Ich arbeite an einer Art Belegungsplan. Jedes Tabellenblatt entspricht einer Woche mit den Tagen Mo-Sa. Es sollen wöchentliche, 2- und 4-wöchentliche Eintragungen von Serienterminen möglich sein, allerdings nur, wenn der gewählte Tag nicht in die Ferien fällt bzw. kein Feiertag ist. In der eigentlichen Datei werden die Tage durch entsprechende Einträge in einer bestimmten Zelle identifiziert. Mein Ansatz war, die 'freien Tage(bzw. Wochen = Tabellenblätter) in ein Array zu laden und dann im Anschluss die identischen Einträge vorzunehmen.
In u.a. Code habe ich in der verlinkten Datei das Prinzip angegeben. Beginnend bei Blatt 2 wird jedes zweite Blatt ausgewählt. In Blatt 4 & 6 befindet sich ein Eintrag in A1(entsprechend der Markierung 'Ferien' oder Feiertag' im Original). Diese werden nicht berücksichtigt. Daher verbleiben die Blätter 2,8 und 10. Leider findet der Eintrag (hier das Rotfärben der Zelle B1) nur im ersten gewählten Tabellenblatt 2 statt. Was ist zu ändern, damit in allen verbliebenen Blättern diese Änderung durchgeführt wird? Ich glaube, ich sehe den Wald vor Bäumen nicht und hoffe, hier kann jemand freundlicherweise das Dickicht beseitigen.
Vielen herzlichen Dank im Voraus!
Volker
https://www.herber.de/bbs/user/107860.xls
Sub BlätterGleichBehandeln()
Dim i As Integer
Dim b As Integer
Dim arrTab()
ReDim arrTab(0)
'Zunächst wird ab dem ersten gewählten Blatt jedes zweite Blatt angesprochen...
For i = ActiveSheet.Index To Sheets.Count Step 2
'...und dann überprüft, ob in Zelle A1 kein Eintrag vorhanden ist.
If Sheets(i).Range("A1").Value = "" Then
ReDim Preserve arrTab(UBound(arrTab) + 1)
'Somit wird jedes zweite Blatt ohne A1-Eintrag in Array geschrieben
arrTab(UBound(arrTab)) = Sheets(i).Range("A1").Worksheet.Index _
& " - " &Sheets(i).Range("A1").Worksheet.Name
End If
Next i
'Hier wird der Array-Inhalt ausgegeben
MsgBox "1 " & "Blätter ohne Eintrag in >A1