Microsoft Excel

Herbers Excel/VBA-Archiv

Alle Zeilen einer Tabelle kopieren

Betrifft: Alle Zeilen einer Tabelle kopieren von: Ma27
Geschrieben am: 06.07.2015 09:31:42

Hallo Forum,

ich habe eine Exceldatei mit 10 Tabellenblättern, die die gleiche Tabelle (gleiche Überschriften) beinhalten. Diese würde ich gerne mit der Überschrift in Zeile 1 in dem Tabellenblatt "Konsolidierung" per Makro zusammenfügen, damit ich bei Aktualisierung der 10 Tabellen auch die neuen Daten in der Tabelle "Konsolidierung" habe.

Ich habe nun ein Makro aufgezeichnet, bei dem ich die Daten in den verschiedenen Tabellen kopiert und in die Tabelle "Konsolidierung" untereinander eingefügt habe.

Da sich meine 10 Tabellen aber anhand einer Webabfrage automatisch beim Öffnen der Datei aktualisieren, kommen auch neue Zeilen in den Tabellen hinzu die auch in die Tabelle "Konsolidierung eingefügt werden sollen.

Könnt ihr mir hierbei bitte weiterhelfen?

Mein Makro sieht wie folgt aus:







Sub Aktualisierung()
'
' Aktualisierung Makro
' Dieses Makro fügt die aktualisierten Listen in das Tabellenblatt Konsolidierung zusammen
'

'
' Nimmt das Tabellenblatt R8LR und kopiert Zeile 2 bis zu meiner Auswahl, übernimmt aber nicht   _
_
neu hinzugekommene Spalen'

    Sheets("R8LR").Select
    Range("Tabelle__R8LR").Select
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Selection.Copy
    Sheets("Konsolidierung").Select
    ActiveWindow.SmallScroll Down:=-6
    Range("A2").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=9
    Sheets("S15i").Select
    ActiveWindow.SmallScroll Down:=-21
    Range("Tabelle__S15i").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    Range("A12").Select
    ActiveSheet.Paste
    Sheets("M98MA").Select
    Range("Tabelle_M98MA").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    ActiveWindow.SmallScroll Down:=165
    Range("A177").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=99
    Sheets("F16").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("Tabelle_F16_").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    Range("A275").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=159
    Range("A437").Select
    Sheets("M98ST").Select
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("Tabelle_M98ST").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=6
    Sheets("S15iKS").Select
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("Tabelle__S15iKS").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    Range("A441").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=6
    Sheets("BSLB").Select
    ActiveWindow.ScrollColumn = 1
    Range("Tabelle_BSLB").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    Range("A446").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=21
    Sheets("ISD").Select
    Range("E2:L3").Select
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("Tabelle_ISD").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    Range("A467").Select
    ActiveSheet.Paste
    Sheets("M12HS").Select
    ActiveWindow.ScrollColumn = 1
    Range("A3:N3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Konsolidierung").Select
    Range("A468").Select
    ActiveSheet.Paste
End Sub

Danke schonmal und viele Grüße

  

Betrifft: AW: Alle Zeilen einer Tabelle kopieren von: Daniel
Geschrieben am: 06.07.2015 09:56:22

Hi
wenn du hilfe möchtest, solltest du erstmal deinen Code von unnötigem befreien.
mit dem Makro aufgezeichneter Programmcode enthält viele Befehle, die wir als Anwender und Mausschubser zwar ausführen müssen, welche aber für das Makro unnötig sind.

beispielsweise kannst du sämtliche Befehle ActiveWindow.ScrollColumn = 5 oder ActiveWindow.ScrollRow = 4 sofort löschen.

Desweitern ist es in einem Makro nicht erforderlich, eine Zelle zuserst zu selektieren und dann mit dem Selektierten Zellbereich den Befehl auszuführen.
Das ist nur der Tatsache geschuldet, dass der Anwender mit der Maus arbeitet und daher erst ein Element anwählen muss und danach dann den Befehl.
VBA kann aber auch direkt den Befehl auf das Element anwenden.

beispiel:

Sheets("R8LR").Select
    Range("Tabelle__R8LR").Select
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Selection.Copy
    Sheets("Konsolidierung").Select
    ActiveWindow.SmallScroll Down:=-6
    Range("A2").Select
    ActiveSheet.Paste

wird zu:
Sheets("R8LR").Range("Tabelle__R8LR").Copy Destination:=Sheets("Konsolidierung").Range("A2")

weitere Infos zu dem Thema, wie aufgezeichneter Code zu überarbeiten ist, findest du hier:
http://www.online-excel.de/excel/singsel_vba.php?f=78

überarbeite mal deinen Code entsprechend diesen Hinweisen, dann wird er kürzer und übersichtlicher und dann findet man auch die fehler leichter.

Gruß Daniel


  

Betrifft: AW: Alle Zeilen einer Tabelle kopieren von: Klexy
Geschrieben am: 06.07.2015 11:00:04

Zusatz zum Umgang mit Makros: Du hast überall absolute Befehle:

Range("A12").Select
    ActiveSheet.Paste

Du musst relative Befehle nehmen, denn es kommen ja Daten hinzu, wie du schreibst, und dann ist die erste leere Zeile nicht mehr 12 sondern 13 oder 14:
Range("A1").End(xlDown).Offset(1,0).Select
Du schreibst, dass neue Zahlen hinzukommen. Kommen auch alte Zahlen weg?
Du schreibst, dass neue Zeilen in die Konsolidierung eingefügt werden sollen. Wo eingefügt? Ans Ende? Ans Ende des Bereichs aus dem jeweiligen Tabellenblatt?
Oder meinst du gar nicht eingefügt, sondern jedes Mal eine neue komplette Konsolidierungsliste erstellen?

Und dann wäre eine Beispieldatei schon sehr hilfreich, damit man sieht, wie sich die Daten von Mal zu Mal ändern können.


 

Beiträge aus den Excel-Beispielen zum Thema "Alle Zeilen einer Tabelle kopieren"