Ich versuche, zwei verschiedene Arrays mit jeweils 20 Arbeitsblättern zu erstellen und zu durchlaufen. Die Arbeitsblätter stammen aus zwei verschiedenen Arbeitsmappen, "monatlich" und "wöchentlich".Schleife durch zwei Arbeitsblatt-Arrays in zwei Arbeitsmappen
Ich habe folgende (nach einigen Änderungen vorgeschlagen):
Dim Monthly As Excel.Workbook
Set Monthly = Workbooks("name of monthly workbook")
Dim Weekly As Excel.Workbook
Set Weekly = Workbooks.Open("path to weekly workbook")
Dim mWshtNames As Variant
Dim mWshtNameCrnt As Variant
Dim wWshtNames As Variant
Dim wWshtNameCrnt As Variant
mWshtNames = Array(Monthly.Worksheets("Reading Monthly"), Monthly.Worksheets("Writing Monthly"), Monthly.Worksheets("Science Monthly"))
'and so on, to include 20 worksheets
wWshtNames = Array(Weekly.Worksheets("Reading Weekly"), Weekly.Worksheets("Writing Weekly"), Weekly.Worksheets("Science Weekly"))
'and so on, to include 20 worksheets
For Each mWshtNameCrnt In mWshtNames
For Each wWshtNameCrnt In wWshtNames
MsgBox "Monthly sheet is " + mWshtNameCrnt.Name
MsgBox "Weekly sheet is " + wWshtNameCrnt.Name
'the real code will loop here; I am using MsgBox to test that the loop is working.
Next wWshtNameCrnt
Next mWshtNameCrnt
Das Endziel für den Code ist, Daten von bestimmten Zellen in jeder Woche Arbeitsblatt kopieren und in eine entsprechende Zelle in einem entsprechenden Monat einfügen Arbeitsblatt; also müssen die Schleifen wie eine Eins-zu-eins-Beziehung sein.
Aktuelles Ergebnis (12 MsgBoxes):
- "Monatsblatt Lesen Monthly", "Wochenblatt ist Lesen Weekly", "Wochenblatt Weekly schreibt", "Wochenblatt Wissenschaft Weekly ist"
- "Monatliches Blatt schreibt monatlich", "Wöchentliches Blatt liest wöchentlich", "Wöchentliches Blatt schreibt wöchentlich", "Wöchentliches Blatt ist Wissenschaft wöchentlich"
- "Monatliches Blatt ist Wissenschaftlich monatlich", "Wöchentliches Blatt wird wöchentlich gelesen" , "Wöchentliches Blatt ist Wöchentlich schreiben", "Wöchentliches Blatt ist Wissenschaft Wöchentlich"
Erwartetes Ergebnis (6 MsgBoxes):
- "Monatsblatt Lesen Monthly", "Wochenblatt ist Lesen Weekly"
- "Monatsblatt Monat schreibt", "Wochenblatt schreibt Weekly"
- „Monatsblatt ist Science Monthly“, „Wochenblatt ist Wissenschaft Weekly“
die Antwort von @Jeeped hat das gleiche effektive Ergebnis, wobei das Direktfenster neun Ergebnisse zurückgibt, wo sechs erwartet werden. Ich denke, ich brauche "Next wWshtNameCrnt" und "Next mWshtNameCrnt", um zur gleichen Zeit zu aktivieren, aber ich weiß nicht, wie man das schreibt.
Sollte nicht '' und so weiter, um 20 Arbeitsmappen zu enthalten '' und so weiter, um 20 workSHEETs einzuschließen? – Jeeped
Was genau soll deine Schleife *** *** machen? Wenn Sie nur die Namen anzeigen möchten, müssen Sie '.Name' auf Ihren Arbeitsblatt-Instanzen aufrufen. – Comintern
Sie sollten eine For-Schleife verwenden, um Arrays zu iterieren, und eine For-Each-Schleife, um Sammlungen von Objekten zu iterieren. Ihre Kommentare zeigen an, dass die Arrays * Arbeitsmappen * enthalten, aber Ihr Code sagt etwas anderes, und die Arrays enthalten tatsächlich * Arbeitsblätter *. Auch Ihre Arrays speichern die 'Worksheet' Objekte, nicht nur ihre Namen, daher ist der Name der Variablen irreführend .... und' mWshtNames' vs 'wWshtNames' ist schwer zu lesen und leicht mit dem einen zu verwechseln. Wie wäre es stattdessen mit "Monatsblättern" und "Wochenblättern"? –