Herbers Excel-Forum - das Archiv

Daten aus worksheets kopieren

Bild

Betrifft: Daten aus worksheets kopieren
von: Squooshie

Geschrieben am: 05.08.2008 11:05:13

Hallo
Ich habe folgendes Problem.
In einer Arbeitsmappe werden Daten aus mehreren Arbeitsblättern auf ein Haupt-Arbeitsblatt kopiert.
Um das zu erreichen, habe ich eine For Schleife gebastelt, die die einzelnen Worksheets etwa so
n=thisworkbook.worksheets.count
for i=2 to n
worksheets(i).range ...
usw.
nun ist aber mein Problem, dass zwischenzeitlich Worksheets gelöscht wurden und die Nummerierung nicht fortlaufend ist, und wenn nun 77 worksheets gezählt werden kopiert das Programm höchstens bis Worksheet Nr. 77 , alle weiteren Worksheets werden unbeachtet. Anfangs gab es auch Probleme, da z.B. Worksheet 9 nicht existiert und dadurch ein Fehler beim kopieren entstand. Das habe ich aber durch "on error resume next" behoben.
Kann ich mir irgendwie die höchste vergebene Worksheet nummer anzeigen lassen?Das würde mein Problem bereits lösen.
Besten Dank im Vorraus
Mfg Squooshie

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Tino

Geschrieben am: 05.08.2008 11:24:14
Hallo,
habe zwar kein Office2000, aber die Nr. ist doch der Platz wo Deine Tabelle in der Mappe steht?
Also wenn ich zBsp. worksheets(2) lösche wird aus worksheets(3), dass worksheets(2).
Kann Dein Problem nicht nachvollziehen oder ich verstehe Deine Frage nicht.
Gruß Tino

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Andreas Emmert

Geschrieben am: 05.08.2008 11:26:23
Hi,
vielleicht so?
Dim ws As Worksheet
Dim IntHighestIndex As Integer
For Each ws In ThisWorkbook.Worksheets
If ws.Index > IntHighestIndex Then
IntHighestIndex = ws.Index
End If
Next ws
MsgBox IntHighestIndex
Grüße
Andreas

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Squooshie

Geschrieben am: 05.08.2008 11:51:07
Hallo
Ich werde das jetzt mal probieren, aber vielleicht fällt jemand anders ja noch eine bessere Lösung ein.
Und zu Tinos Beitrag:
Es ist , bei mir jedenfalls, nicht so. Wenn ich Blatt 2 lösche bleibt das nachfolgende Blatt die Nummer 3.
Wäre ja auch schlecht , denn dann müsste man ja die ganzen direkten Verweise zb in vba ändern.
Das einzige was passiert ist, dass die Lücke mit dem nächsten Blatt, dass erstellt wird, geschlossen wird.

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Tino
Geschrieben am: 05.08.2008 11:56:09
Hallo,
ist mir neu und ich habe schon ein bar einzeiler geschrieben. ;-)
Gruß Tino

Bild

Betrifft: AW: Frage ist offen.
von: Tino
Geschrieben am: 05.08.2008 11:56:52

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: yusuf

Geschrieben am: 05.08.2008 12:35:05
Hi,
eigentlich hat dir Andreas Emmert ja indirekt eine Loesungmoeglichkeit aufgezeigt.
Wenn du anstatt der Blattnummer die Blaetter nimmst erledigt sich dein Problem.

Sub sheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
worksheets(i).range ...
Next ws
End Sub


Gruß
Yusuf

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: yusuf
Geschrieben am: 05.08.2008 12:38:01
Hi,
sry hab nicht richtig gelesen.
Musst ja nicht alle Blaetter durchgehen sondern ab dem zweiten erst.
Bloed das man nicht editieren kann, wenn man einen Beitrag schon abgeschickt hat.
Gruß
Yusuf

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: yusuf
Geschrieben am: 05.08.2008 13:36:39
Hi,
obwohl, du koenntest ja eventuell per if Abfrage ueber den Namen der Blaetter das erste Blatt auslassen.
z.B.:
If ws.name = "erstes Blatt" then
goto weiter
end if
weiter:
Next ws
Gruß
Yusuf

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Squooshie

Geschrieben am: 05.08.2008 15:16:34
Hallo
Ich muss ja garkein Blatt auslassen. Es ist einfach so, dass die Index zahlen der Blätte bis 77 gehen, und in meienr Schleife jedoch die Blätter mit "worksheets(x)" abgefragt werden. Die index Nummer ist jedoch eine andere als die Nummer unter der Excel die Arbeitsblätter abspeichert.
Z.B. ist das Blatt mit Index 50 im visual basic als Tabelle60(Dateiname) abgespeichert. Wenn ich jetzt
eine For Schleife habe, und dort das Arbeitsblatt mit "worksheets(i)" anspreche steht das i jedoch nicht für die Index Nummer sondern für die andere Nummer. Sprich das Blatt heißt Tabelle60, der Index ist auf Grund einer Verschiebung 50 und wenn ich nun meine Schleife bis 50 zählen lasse, dann wird Tabelle60 nicht bearbeitet.
Gibt es eine Möglichkeit die Indexnr in einer Schleife abzufragen?

Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Tino

Geschrieben am: 05.08.2008 16:48:58
Hallo,
ich denke du verwechselst da was!
Das eine ist der Objektname, dass andere der Tabellenname und der Index hat damit nichts zu tun.
Aber dies hatten wir schon mal! oder?
Gruß Tino

www.VBA-Excel.de


Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Tino

Geschrieben am: 05.08.2008 17:03:27
Hallo,
hier mal ein Beispiel.
Aktiviere bei dir mal das Direktfenster.
Neue Datei mit 3 Tabellen und lass dieses Makro laufen.

Sub meineTabellen()
Dim meTab As Integer
For meTab = 1 To Worksheets.Count
Debug.Print Sheets(meTab).Name
Next meTab
End Sub


Nun lösche mal die zweite Tabelle und lass dieses nochmal laufen.
Nun kannst du erkennen, dass Tabelle3 jetzt den Index 2 hat und nicht mehr 3.
Aber wie gesagt ich habe kein Office2000, aber ich denke dies wurde von Bill nicht geändert.
Gruß Tino

www.VBA-Excel.de


Bild

Betrifft: AW: Daten aus worksheets kopieren
von: Hubert

Geschrieben am: 05.08.2008 22:58:21
Hi,
wenn Blätter gelöscht und hinzugefügt werden, kannst du das mit dem Index vergessen,
machs über die Namen oder besser über die Codenamen der tabellen.
mfg Hubert

 Bild
Excel-Beispiele zum Thema "Daten aus worksheets kopieren"
Blätter in andere Arbeitsmappen kopieren Module von Mappe zu Mappe kopieren
Arbeitsblatt 40 mal kopieren Schriftgröße beim Kopieren verdoppeln
Beim Kopieren auch die Zeilenhöhe und Spaltenbreite übernehmen Tabellencode nach Kopieren des Blattes löschen
Arbeitsmappe blitzschnell kopieren VBE-Namen der Blattmodule beim Kopieren festlegen
Blattinhalt von einer zur anderen Arbeitsmappe kopieren Formel bis zur letzten Zeile der Nebenspalte kopieren