Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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

Vom ersten Blatt bis Blatt X in array aufnehmen

Vom ersten Blatt bis Blatt X in array aufnehmen
20.03.2024 16:15:23
MiVidaLoca
Um bestimmte Blätter zu kopieren nutze ich Worksheets(Array("10", "14", "18")).copy
Hierbei ist Blatt "18" immer das letzte Blatt das gewählt werden soll. Danach kommen weitere, die nicht kopiert werden.
Da es vorkommt das weitere Blätter zwischen den Blätter "10" und "18" hinzugefügt werden möchte ich gerne folgendes machen um die zu selektieren Blätter nicht einzeln namentlich auflisten zu müssen:
Worksheets(Array("Liste alle Blätter auf, vom ersten bis Blatt "18")).copy

Nur wie?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
20.03.2024 17:24:28
schauan
Hallöchen,

im Prinzip

Dim arrBlatt, iCnt%, indBlatt%

iBlatt="10": indBlatt = sheets(iBlatt).index
Redim arrBlatt(0)
arrBlatt(0) = "10"
Do while sheets(indblatt).name > "18"
icnt=icnt+1
indBlatt=indBlatt+1
redim preserve arrBlatt(icnt)
arrBlatt(icnt)=sheets(indblatt).name
loop
worksheets(arrblatt).copy

AW: Vom ersten Blatt bis Blatt X in array aufnehmen
20.03.2024 19:42:18
MiVidaLoca
Vielen Dank schauan, werde ich morgen reinpacken und Rückmeldung geben.
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
20.03.2024 17:57:45
daniel
Hi

dim sh as worksheet

Sheets("18").Select
for each sh in activeworkbook.worksheets
if sh.name = "18" then exit for
sh.select false
next
activewindow.Selected Sheets.Copy


Gruß Daniel
Anzeige
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
20.03.2024 19:43:37
MiVidaLoca
Hallo Daniel, werde ich morgen reinpacken und Rückmeldung geben.
Vielen Dank
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
21.03.2024 11:36:59
MiVidaLoca
Hallo Daniel,

auch an dich, vielen Dank.
Nach kleiner Anpassung deines Codes läufts:
Bei activewindow das Leerzeichen zw. Selected und Sheets gelöscht.
Nach dem ersten Lauf waren alle Blätter der Datei zum kopieren selektiert.
Sheets("18").Select auf 10 umgestellt, und alle Blätter vor 18 wurden selektiert, nicht aber 18.

Dann das If unterhalb sh.select False verschoben, somit sind alle Blätter vor und inkl. 18 selektiert.

DANKE!
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
21.03.2024 09:19:27
schauan
Hallöchen,

nur mal als Hinweis. Bei mir ist Blatt 10 das erste Blatt, egal, ob da noch andere davor stehen.

--> Das würde dann dem ursprünglichen Code Worksheets(Array("10", "14", "18")).copy entsprechen, wobei Blatt 10 als erstes Blatt definiert ist. Stehen weitere vor Blatt 10 bzw. werden weitere davor eingefügt, werden diese nicht berücksichtigt.
--> Einschränkung: Ausschlaggebend ist nicht der Blattname, sondern die Position des Blattes in der Datei. Schiebst Du Blatt 14 rechts neben Blatt 18, wird es bei den Lösungen nicht kopiert, bei Deinem ursprünglichen code schon.







Anzeige
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
21.03.2024 11:13:20
MiVidaLoca
Habe deinen Code sehr leicht angepasst, iBlatt wurde angemeckert, also ab ins Dim damit.

Und siehe da, läuft!

Frage, damit ich alles besser verstehe:
Dein Code geht hin dimensioniert den Array mit 0, dieser bekommt Blatt 10 zugewiesen, das letzte Blatt ist 18, gehe von 0 solange weiter bist du Blatt 18 erreicht und verpasse jedem gefundenem Blatt eine Array Nummer?
(in meiner Sprache und sehr vereinfacht ausgedrückt 😉)

Meine Intention ist ja, kopiere alle Blätter die vor dem Blatt 18 sind.

Da eigentlich das erste Blatt namentlich irrelevant ist, kann es verkürzt werden in dem man sagt:
Nimm alle Blätter in das Array bis du bis Blatt 18 angekommen bist (diesen natürlich inkludiert)?
Unterstellt, das immer alle Blätter von links nach rechts durchgegangen werden und immer mit dem ersten gespeicherten Blatt gestartet wird unabhängig des Blatt Code Namen?
Oder muss ein "Startblatt" angegeben werden?

Auf jeden Fall vielen Dank, deine Lösung läuft bisher wie erwartet. DANKE!
Anzeige
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
21.03.2024 11:41:27
MiVidaLoca
Ich möchte vermeiden Namen "Hardcodiert" auflisten zu müssen.
Erspart dann immer den Code anpassen zu müssen, wenn neue Blätter hinzukommen.
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
21.03.2024 16:05:49
schauan
Hallöchen,

Unterstellt, das immer alle Blätter von links nach rechts durchgegangen werden und immer mit dem ersten gespeicherten Blatt gestartet wird unabhängig des Blatt Code Namen?
ja, das ist so.

In meinem Code wird das Blatt 18 übernommen, weil in der Schleife immer das folgende Blatt übernommen wird. Beim nächsten Durchlauf, falls das zuvor Übernommene Blatt 18 war, wird nix mehr gemacht.

Eine Übernahme ab dem ersten Blatt könnte man mit der Do-Schleife so programmieren:

Dim arrBlatt, indBlatt%

indBlatt = 1
ReDim arrBlatt(0)
arrBlatt(0) = Sheets(indBlatt).Name
Do While Sheets(indBlatt).Name > "18"
ReDim Preserve arrBlatt(indBlatt)
arrBlatt(indBlatt) = Sheets(indBlatt + 1).Name
indBlatt = indBlatt + 1
Loop
Worksheets(arrBlatt).Copy


Oder Du nimmst den Code von Daniel, ohne das Leerzeichen zwischen Selected und Sheets :-)
(Ein kleiner Vorteil bei meinem Code wäre, dass die Blätter nicht selektiert werden.)
Anzeige
AW: Vom ersten Blatt bis Blatt X in array aufnehmen
22.03.2024 01:10:22
MiVidaLoca
Gude,

;-)
Bin noch am testen, welcher für meine Zwecke der bessere ist.

Deine do Schleife sieht auch sehr gut aus.
Vielen Dank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige