Gibt es so ein Makro, was unterschiedlich große Tabellen untereinander kopiert?

1 Antwort

Arbeitest du mit Makro Aufzeichnen? Dann einfach in das 5. Blatt gehen und die Aufzeichnung beginnen. Dann in das erste Blatt gehen, die Zelle A1 markieren, dann Strg A drücken, um die Tabelle zu markieren. Diese mit Strg C kopieren und in das 5. Blatt einfügen. Dann auf das 2. Blatt gehen und die gleiche besschrieben Abfolge machen. Zum Schluss im 5. Blatt bleiben und die Aufzeichnung beenden. Dann hast du ein Makro aufgenommen. Das kannst du dann hinter einen Aktionsknopf legen und diesen Ablauf immer wieder automatisch durchführen.

Ich hoffe, das hilft dir.

Danke, du hast mir sehr geholfen. Von der Tastenkombination STRG + A habe ich noch nicht gewusst. Das Problem ist, die Größe der Tabelle ändert sich manchmal und dann hilft mir das Aufzeichnen nicht sehr viel. Vielleicht könnte sich das Makro ausrechnen ab wo es die nächste Tabelle einfügen soll. Man hat z. B. die Zellen A1:H650 mit der Tastenkombination markiert und das Makro soll rechen A650 + 1 nach unten. Verstehst du was ich meine? :)

1
@Cyberjoker

Du kannst mit Range(...).End(xlDown) oder so ähnlich an das Ende der Tabelle springen. Mit Offset(1,0) gehst du eine Zeile tiefer, wo du dann die neuen Daten einfügen kannst.

2
@Suboptimierer

Kannst du mir das genauer erklären? Ich kenne diese Befehle nicht.

0
@Cyberjoker

wenn Du die längste Spalte der Tabrelle kennst (z.B.A) und A lückenlos gefüllt ist, dann kannst du auch so vorgehen: Die zweite Tabelle kopieren, den Cursor in den beschriebenen Bereich automatisch setzen (zB nach A2) lassen, und dann den Befehl:

Activecell.End(xldown).offset(1, 0).paste

(oder .pastespecial(xlvalues)

0
@Iamiam

Die erste freie Zeile kannst du auch bekommen mit

Activesheet.cells.specialcells(xllast).row + 1 (Trockenübung, das .cells ist möglicherweise überflüssig)

0

da hast du natürlich recht. da habe ich nicht weit genug gedacht. dann wirst du um vba nicht rumkommen. vielleicht hilft dir das Stichwort dynamische Tabellen weiter.

1
@Rolfola

Danke, hat mir bei meiner Suche weiter geholfen :)

0
@Cyberjoker

@Subopt: Range(...).end(xldown : Das geht allerdings nur, wenn man die längste Spalte kennt und diese zwischendrin keine Leerzellen enthält.

Wegen der Leerzellen sicherer ist auch da Range("A65000").end(xlup) ggf. .row (bzw statt 65000 die maximale Zeilennummer des Blattes)

der beste Befehl dafür ist Activesheet.usedrange.specialcells(xllastcell) und ggf. .row
Das kann man in eine Variable schreiben und damit weitermachen.

1
@Iamiam

Range("A65000").end(xlup) 

Das hat das gleiche Problem wie xldown, dass man die längste Spalte kennen muss.

Ja, UsedRange geht auch. Das umfasst die erste Zelle links oben, die gefüllt ist bis zur letzten Zelle in der rechten unteren Ecke die gefüllt ist und mit der ersten Zelle zusammenhängend ist.

.Row ist möglich, aber meiner Meinung nach hier nicht nötig.

0

das macht ja nichts. solche Fragen stellt man sich ja öfter, die sind ja zeitlos. ;)

0

Was möchtest Du wissen?