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

VBA: Dynamisches Copy-Pasten mittels Identifier

VBA: Dynamisches Copy-Pasten mittels Identifier
22.04.2014 20:00:18
Hamiltonian
Hallo liebe Forengemeinde,
nachdem ich schon eine halbe Ewigkeit fleißig mitlese und mir die ein oder andere Antwort wie auch Tutorials über schwere Excelzeiten hinweg geholfen haben, muss ich mich jetzt doch mit einem eigenen Thread mal an euch wenden.
Vorab: Ich konnte in der Suche nichts Adäquates finden.
Folgende Herausforderung:
Ich habe mehrere kleinere Excellisten im Bereich zwischen 50 bis 70 Spalten und variabler Zeilenanzahl. Ich muss den Inhalt dieser Listen in eine einzige große Liste konsolidieren. Das geschicht via eines Makros; Knöpfchen drücken und los geht´s. Ich habe statisch Bereiche definiert, die eingelesen und in die große Liste gecopy-pasted weden sollen. So weit so gut, funktioniert wunderbar.
In Zukunft muss das Makro aber auch mit Listen zurecht kommen, in die Spalten eingefügt wurden, Spalten gelöscht wurden, verschoben etc. D.h. mit meinen statisch definierten Ranges komm ich hier nicht mehr weiter, da ich von der Reihenfolge her (und anschließender verformelter Weiterverarbeitung)ein Kuddelmuddel einlese. Das entscheidende Code-Snippet schaut beispielhaft so aus:
-------------
ActiveWorkbook.Sheets("Einzelliste1").Range(ActiveWorkbook.Sheets("Einzelliste1").Cells(10, 1),ActiveWorkbook.Sheets("Einzelliste1").Cells(10, 14)).Copy
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5, 7),ThisWorkbook.Sheets("GroßeListe").Cells(5, 21)).PasteSpecial xlPasteFormats
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5, 7),ThisWorkbook.Sheets("GroßeListe").Cells(5, 21)).PasteSpecial xlPasteValuesAndNumberFormats
ActiveWorkbook.Sheets("Einzelliste2).Range(ActiveWorkbook.Sheets("Einzelliste2").Cells(10,15),ActiveWorkbook.Sheets("Einzelliste2").Cells(10, 20)).Copy
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5,22),ThisWorkbook.Sheets("GroßeListe").Cells(5, 27)).PasteSpecial xlPasteFormats
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5,22), ThisWorkbook.Sheets("GroßeListe").Cells(5, 27)).PasteSpecial xlPasteValuesAndNumberFormats

-------------
Ich hab nun gedacht ich arbeite mit Identifiern, die ich unique einer Spalte zuweise. Die Einzellisten werden erst ab Zeile 7 beschrieben. Ich kann also z.B. unter dem Spaltennamen in einer ausgeblendeten Zeile Identifier zuweisen (also z.B. Key_column1)und mich dann beim Aus- und Einlesen dieser Identifier bedienen.
Also statt: "Kopiere aus Einzelliste Spalte A bis AC und füge in GroßeListe in Spalte C bis AE ein" bräuchte ich ein: "Nimm aus Einzelliste Spalte mit identifier Key_column3 und füge in GroßeListe in Spalte G ein, nimm aus Einzelliste Spalte mit identifier Key_column7 und füge in GroßeListe in Spalte J ein usw."
Ich hoffe es ist eingermaßen klar was ich suche und hoffe zu finden :-)
Ich bin an dieser Stelle für alle Ratschläge und Tipps oder Verweise auf mir noch unbekannte Threads dankbar!
Viele Grüße
Hamiltonian

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Na, im Archiv findest du doch sicher xmal ...
23.04.2014 01:39:38
Luc:-?
…die Empfehlung, benannte Bereiche in solchen Fällen zu benutzen, Hamiltonier,
die ändern sich bekanntlich bei Löschen/Einfügen von Zeilen/Spalten automatisch mit.
Morrn, Luc :-?

AW: Na, im Archiv findest du doch sicher xmal ...
23.04.2014 07:20:27
Hamiltonian
Guten Morgen und danke schonmal für deine Antwort so weit.
Ich hätte als relativer Excel-VBA-Laie nicht die Brücke schlagen können zwischen benannten Spalten und dem was ich suche :-)
Du meinst also Folgendes: Ich gebe jeder Spalte im Namemanager einen eindeutigen Namen. Dann referenziere ich mich im Script auf die zugewiesenen Namen anstatt auf die statischen Bereiche und freue mich meines Lebens, da ich dann Spalten verschieben kann wie ich will. Das VBA Skript orientiert sich nur an den Namen und nicht an der Spalte. Richtig?
Beste Grüße
Hamiltonian

Anzeige
Richtig, aber nicht nur bei Spalten or Zeilen, ...
23.04.2014 09:29:16
Luc:-?
jede Zuordnung eines Namens zu einem Bereich reagiert so auf Änderungen, Ham…,
die Adressen im Bezug wdn angepasst (hier auch absolute) und sind so stets aktuell. Dein Pgm greift dann über den Namen stets auf den aktuellen Bereich zu → Form: Range("bereichsname")
Gruß Luc :-?

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige