Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1508to1512
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

For...Next-Schleife durch Array klemmt

For...Next-Schleife durch Array klemmt
27.08.2016 20:25:11
Volker
Guten Abend liebe Forumsgemeinde!
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For...Next-Schleife durch Array klemmt
27.08.2016 21:03:50
fcs
Hallo Volker,
dein Makro musst du wie folgt anpassen.
1. Darfst du im Array nur den den Blattnamen oder den Index speichern, so dass du den Arrayinhalt beim 2. Ducrhlauf die Arraywerte verwenden, um auf dem jeweiligen Blatt AKtionen durchführen zu können.
2. Musst du beim Formatieren des Zellbereiches immer auch den Blattnamen mit angeben als Referenz. Sonst formtiert das Makro nur mehrmals im aktiven Tabellenblatt die Zelle A1.
Falls du in den Blättern viele Aktionen durchführen willst, dann solltest du eine entsprechende Objektvariable deklarieren und verwenden. Im With-Konstrukt ist dann wichtig, vor den Range- oder Cells-Anweisungen den Punkt einzufügen, der die Referenz zu im vorherigen With-Objekt herstellt.
Sub BlätterGleichBehandeln()
Dim i As Integer
Dim b As Integer
Dim arrTab()
Dim wks As Worksheet
ReDim arrTab(0)
b = 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
b = b + 1
ReDim Preserve arrTab(UBound(arrTab) + 1)
'Somit wird jedes zweite Blatt ohne A1-Eintrag in Array geschrieben
arrTab(UBound(arrTab)) = Sheets(i).Name
End If
Next i
MsgBox b & " Blätter ohne Eintrag in >A1 0 Then
For b = 1 To UBound(arrTab)
Set wks = Sheets(arrTab(b))
With wks
.Range("B1").Interior.ColorIndex = 3
End With
Debug.Print b, arrTab(b)
Next b
End If
End Sub

Anzeige
ohne Array
28.08.2016 10:46:18
snb

sub M_snb()
for each sh in sheets
if sh.cells(1)="" then sh.cells(1,2).interior.colorindex=3
next
End Sub

AW: For...Next-Schleife durch Array klemmt
31.08.2016 23:13:10
Volker
Konnte leider nicht eher reagieren, aber vielen herzlichen Dank für die beiden Antworten. Eure Hinweise haben mir einen grpßen Schritt weiter geholfen.
Volker
AW: For...Next-Schleife durch Array klemmt
31.08.2016 23:14:15
Volker
Konnte leider nicht eher reagieren, aber vielen herzlichen Dank für die beiden Antworten. Eure Hinweise haben mir einen grpßen Schritt weiter geholfen.
Volker

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige