VBA - mehrere Tabellenblätter zusammenfassen

Hallo an alle.

Ich weiß, dass es zu diesem Thema schon Beiträge gibt, aber das Richtige für mein Problem habe ich nicht gefunden.

Ich habe eine Excel-Datei mit zur Zeit 21 Tabellenblättern. Davon müssen aber nicht alle zusammengefasst werden, da nur in manchen von ihnen die benötigten Daten stehen.

  1. Wie kann ich es ‚anstellen‘, dass ich die ‚unwichtigen‘ Tabellenblätter (folgende Namen: MBM_1, Hilfe, Hilfe_2, Übersicht, Übersicht_Einkauf) nicht mit einbeziehe?

  2. Ist es möglich, dass ganze so zu programmieren, dass, falls eine neue Zeile in einem der vorhandenen Tabellenblätter oder ein ‚Datensatz‘ in einem zur Zeit noch leeren aber schon vorbereiteten Tabellenblatt hinzukommt, das Ganze ‚automatisch‘ angepasst wird.

Die Übersicht erstelle ich zur Zeit über eine Schaltfläche. Das zugehörige Tabellenblatt heißt dementsprechend auch Übersicht.
Funktioniert auch soweit, nur muss ich halt eben immer den Zeilenindex per Hand ändern, wenn ein neuer ‚Datensatz‘ hinzukommt.

Brauche von jedem Tabellenblatt die Spalten B bis I sowie die Zeilen ab Zeile 5 bis zur letzten beschriebenen Zeile.

Der entsprechende Code sieht bis jetzt so aus:
(davor kommt noch was, was aber, denke ich, nicht weiter wichtig ist - sollte es doch wichtig sein, werde ich es auf Wunsch noch posten)

lz = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 2
Cells(lz, 2).Select

Selection.Value = „Bodenpappe“
Worksheets(„Bodenpappe“).Range(„B5:I6“).Copy Destination:=Worksheets(„Übersicht“).Cells(lz + 1, 2)
Worksheets(„Übersicht“).Columns(8).AutoFit

und das ganze für jedes Tabellenblatt einzeln und mit Änderung des Zeilenindex (in dem Beispiel B6) z.B. in B8.

Hoffe, dass mir jemand helfen kann.

Danke schon mal im Voraus.

PS: Arbeite mit WindowsXP, Excel 2002

Gruß,
Victoria

Hallo Victoria.

Brauche von jedem Tabellenblatt die Spalten B bis I sowie die
Zeilen ab Zeile 5 bis zur letzten beschriebenen Zeile.

Wenn die Zellen in den Tabellenblättern nicht über den „bereits benutzten“ Bereich hinaus irgendwelche Formatierungen enthalten oder sonst wie verändert wurden, dann kannst Du zum automatischen Erfassen der letzten beschriebenen Zeile das folgende Prinzip verwenden:

Worksheets("TabelleX").Cells(Worksheets("TabelleX").UsedRange.Rows.Count + 1, Spaltenzahl) = Irgendwas

Oder aber:

Worksheets("TabelleX").Range("$B$" & Worksheets("TabelleX").UsedRange.Rows.Count + 1 & ":blush:I$" & Worksheets("TabelleX").UsedRange.Rows.Count + 1) = Irgendwas

Vielleicht hilft Dir das ja schon weiter.

VG
Carsten

Hallo Carsten,

danke für Deine Antwort.

Mein Hauptproblem ist eigentlich, dass ich das ganze am liebsten mit einer Schleife lösen würde, um nicht für jedes Tabellenblatt einzeln den Code aufschreiben zu müssen, da dann bei hinzukommen von Zeilen in den Tabellenblättern immer per Hand im Code etwas geändert werden müsste. Vllt kannst Du mir da ja behilflich sein.

Unter folgendem Link kannst Du Dir mal eine gekürzte Beispielvariante runterladen.

http://rapidshare.com/files/242130109/Variante1.xls…

Danke im Voraus.

Grüße,
Victoria