Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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 Daten kopieren

VBA Daten kopieren
25.05.2020 18:39:48
Dietmar
Hallo Zusammen,
seit Tagen beschäftigt mich folgendes Problem:
Ein bestehender Tabellenbereich (Tab1) soll in ein neues Tabellenblatt (Tab2) kopiert werden.
Tab 1 ist in meinem Fall eine Tabelle die mit Messdaten gefüttert wird, welche zuvor berechnet wurden etc. Diese Daten sollen zur Aufbereitung und Dokumentation nun in Tab 2 kopiert werden.
In Tab 2 sollen die Daten aber nicht bei jedem Kopiervorgang überschrieben werden, sondern jeweils in eine neue Spalte, rechts der alten, eingefügt werden.
Ein Script habe ich schon einmal zusammnegeschustert. Es macht das was ich will, allerdings nur nach unten und nicht nach rechts.
Würde mich riesig freuen, wenn ein Profi einem DAU helfen könnte.
Hier mein Script:

Sub Auswertung_Vergleich()
With Worksheets("Auswertung Vergleich")
Worksheets("Auswertung").Rows("7:12").Copy
.Cells(IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + _
_
_
_
0, 1).PasteSpecial Paste:=xlValues
End With
Application.CutCopyMode = False
End Sub

Dieses habe ich auch schon umgeschrieben (versucht). Nur kopiert es genau ein mal und dann geschieht nichts mehr.
Script:

Sub Auswertung_Vergleich()
With Worksheets("Auswertung Vergleich")
Worksheets("Auswertung").Range("a7:b12").Copy
.Cells(IIf(IsEmpty(.Cells(.Columns.Count, 1)), .Cells(.Columns.Count, 1).End(xlToLeft).Column, . _
_
_
_
Columns.Count) + 0, 1).PasteSpecial Paste:=xlValues
End With
Application.CutCopyMode = False
End Sub

Vielen Dank im Voraus für die freundliche Hilfe im Voraus.
Grüße
Dietmar

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Daten kopieren
25.05.2020 18:52:52
ChrisL
Hi Dietmar
.Cells(Zeile, Spalte)
vorher:
.Cells(VariableZeile, 1)

(somit fix Spalte A)
neu:
.Cells(1, VariableSpalte)

(somit fix Zeile 1)
Ansonsten +0 kann man auch weglassen, aber ich denke es hätte schon immer +1 sein sollen.
cu
Chris
AW: VBA Daten kopieren
25.05.2020 21:01:34
Dietmar
Hallo Chris,
vielen Dank für die rasche Hilfe.
Irgendwie ist mir nicht klar, wo ich die Änderungen am Skript vornehmen soll.
Vielleicht kannst du mir noch einmal auf die Sprünge helfen?
Wie gesagt, es soll aus der Inhalt einer Tabelle aus Worksheet A in ein neues Worksheet B kopiert werden. Der Inhalt in Worksheet B soll bei erneutem Kopiervorgang nicht überschrieben, sondern rechts davon eingefügt werden.
Vielen Dank für die Geduld im Voraus.
Gruß
Dietmar
Anzeige
AW: VBA Daten kopieren
26.05.2020 00:31:48
Werner
Hallo,
so:
Sub Auswertung_Vergleich()
Dim loSpalte As Long
With Worksheets("Auswertung Vergleich")
Worksheets("Auswertung").Range("a7:b12").Copy
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1).Column
If .Cells(1, 1) = "" Then loSpalte = 1
.Cells(1, loSpalte).PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
End Sub
Gruß Werner
AW: VBA Daten kopieren
26.05.2020 08:49:59
Dietmar
Hallo Werner,
es schaut sehr gut aus. Vielen lieben Dank für die megaschnelle Hilfe.
Kannst du mir evtl. erklären was der Code macht bzw. die Funktionen der einzelnen Schritte sind.
Möchte etwas in die Materie eintauchen.
Vielen Dank
Dietmar
Anzeige
AW: VBA Daten kopieren
26.05.2020 10:04:13
Werner
Hallo,
Sub Auswertung_Vergleich()
Dim loSpalte As Long
With Worksheets("Auswertung Vergleich")
Worksheets("Auswertung").Range("a7:b12").Copy
'## 1. Ermitteln der letzten belegten Zelle in Zeile 1 von links nach rechts
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1).Column
'## 2. Prüfen ob die Zelle A1 leer ist
If .Cells(1, 1) = "" Then loSpalte = 1
.Cells(1, loSpalte).PasteSpecial Paste:=xlPasteValues
End With
zu 1.
Es wird die letzte belegte Zelle in Zeile 1 von links nach rechts ermittelt.
Da das Ergebnis aber in die nächste freie Spalte soll, wird die mit Offset angesprochen.
Offset liefert einen "Versatz". Werte in der Klammer vor dem Komma betreffen den Zeilenversatz,  _
nach dem Komma die Spaltenversatz. Positive Werte beim Zeilenversatz = Versatz nach unten, negative Werte = Versatz nach oben. Positive Werte beim Spaltenversatz = Versatz nach links, negative Werte = Versatz nach rechts.
Annahme: die letzte belegte Zelle in Zeile 1 wäre die Zelle D1
Dann wäre .Offset(1, 1) ausgehend von D1 eine Zeile nach unten, eine Zeile nach rechts, also E2  _
angesprochen.
zu 2.
Da ich hier mit Offset arbeite bekommst du bei einem komplett leeren Blatt als Start für das  _
Einfügen der Daten immer die Zelle B2.
Der Code sucht ja in Zeile 1 nach der letzten belegten Zelle. Da aber alles leer ist, kommt er  _
bei A1 raus und wendet dann darauf den Offset(, 1) an, womit wir dann bei B1 wären.
Ich prüfe einfach, ob Zelle A1 leer ist, wenn ja dann ändere ich den Wert von loSpalte einfach  _
auf 1. Somit wird beim ersten Start des Makros in A1 begonnen.
Beim nächsten Durchlauf ist ja A1 nicht mehr leer, somit wirkt sich dann das Offset aus.
Gruß Werner
Application.CutCopyMode = False
End Sub

Anzeige
AW: VBA Daten kopieren
26.05.2020 17:57:39
Dietmar
Ach manno,
ich dachte nun jetzt kann ich das Skript entsprechend meinem zweiten Problem anpassen. Dem ist nicht so. Mir fehlt dazu wohl der Grips.
Dachte ich könnte für das erste Problem doch in Zeile 2 anfangen, da ich noch einen Text über den Tabelleninhalt einfügen wollte. Das will aber nicht.
Mein 2. Problem ist nun dass ich einen anderen Tabellen Bereich aus Tab1 unterhalb des zuvor eingefügten in Tab2 haben möchte und dieser dann bei weiterem kopieren nach rechts "ausbreitet".
Also erster Schritte Inhalt aus einer Tabelle in ein anderes Arbeitsblatt kopieren und jeden weiteren Kopiervorgang nach rechts weiterlaufen lassen ohne den vorigen Inhalt zu überschreiben.
Zweiter Schritt denn einen anderen Tabellenbereich kopieren und in selbes Arbeitsblatt aber unter dem Inhalt von Schritt 1 einfügen und dann wieder weitermachen nach rechts.
Ich höre jetzt schon euer Stöhnen, trotzdem Danke ich für die Hilfe im Voraus.
Tut mir auch echt leid.
Gruß
Dietmar
Bsp.:
Hier stehen Daten zum Produkt etc.
Ab hier kommt Dateninhalt aus Tabelle 1
Inhalt Tabelle1 Inhalt Tabelle1 Inhalt Tabelle1
Inhalt Tabelle1 Inhalt Tabelle1 Inhalt Tabelle1
Inhalt Tabelle1 Inhalt Tabelle1 Inhalt Tabelle1
Inhalt Tabelle1 Inhalt Tabelle1 Inhalt Tabelle1
Ab hier kommt Dateninhalt aus Tabelle 2
Inhalt Tabelle2 Inhalt Tabelle2 Inhalt Tabelle2
Inhalt Tabelle2 Inhalt Tabelle2 Inhalt Tabelle2
Inhalt Tabelle2 Inhalt Tabelle2 Inhalt Tabelle2
Inhalt Tabelle2 Inhalt Tabelle2 Inhalt Tabelle2
Inhalt Tabelle2 Inhalt Tabelle2 Inhalt Tabelle2
Inhalt Tabelle2 Inhalt Tabelle2 Inhalt Tabelle2
Anzeige
AW: VBA Daten kopieren
29.05.2020 06:16:13
Werner
Hallo,
da fange ich allerdings an zu Stöhnen.
Du willst also mit einem Makro Daten mal aus Blatt1 und dann auch einen Bereich aus Blatt2 in verschiedene Bereiche eines Zielblattes kopieren.
Frage: Woher soll das Makro wissen aus welchem Blatt du genau kopieren willst? Per Gedankenübertragung funktioniert das nicht.
Gruß Werner
AW: VBA Daten kopieren
29.05.2020 10:13:44
Dietmar
Hallo,
habe jetzt mal eine Excel-Datei hochgeladen.
https://www.herber.de/bbs/user/137861.xlsx
Vielleicht wird es dann etwas klarer.
Beste Grüße
Dietmar
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige