Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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 aus Liste kopieren und anfügen

VBA: Daten aus Liste kopieren und anfügen
19.01.2019 22:12:26
K
Guten Tag, ich habe folgendes Problem, dass ich mittels Makro/VBA lösen möchte:
In Tabelle1 befindet sich eine Liste mit den Spalten A bis H (Sie erstreckt sich über die Zeilen 5 bis 4000). Ich möchte alle (aber nur die) Zeilen, in denen ein Merkmal in Spalte G erfüllt ist (größer Null), kopieren und dann die Spalten B bis G (nicht A und H) in der Liste leeren. Die kopierten Zeilen sollen an eine andere Liste in Tabelle2 angefügt werden.
Hintergrund: Die in Tabelle1 nun geleerten Zeilen sollen danach wieder neu verwendet werden. Wenn wieder genug Merkmale in Spalte G erfüllt sind (größer Null), dann soll der Nutzer dieses Makro erneut nutzen, d.h. die entsprechenden Zeilen wieder leeren und damit die Liste in Tabelle2 erweitern (nicht überschreiben).
Kann mir eventuell jemand sagen, wie das geht?
Beste Grüße, Kai.

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: Daten aus Liste kopieren und anfügen
19.01.2019 23:02:19
onur
Eine Beispieldatei wäre angebracht.
AW: VBA: Daten aus Liste kopieren und anfügen
19.01.2019 23:58:52
Rob
Hallo Kai,
ich sehe das wie Onur: ohne Bsp-Datei mache ich nichts, weil mir die Zeit fehlt etwas nachzustricken bzw. es auch leicht zu Missverständnissen kommen kann. In diesem Fall ist die Tabelle aber relativ easy aufgebaut, weshalb ich eine Ausnahme mache. Probier mal den folgenden Code:

Sub ZeilenKopieren()
Dim lastRow As Long
Dim r As Range
For Each r In Sheets(1).Range("G2:G" & Sheets(1).UsedRange.Rows.Count)
If r > 0 Then
lastRow = Sheets(2).Cells(Sheets(2).Rows.Count, 1).End(xlUp).Row + 1
r.EntireRow.Copy Sheets(2).Cells(lastRow, 1)
'Spalten B bis G löschen
r.Offset(0, -5).Resize(1, 6).Clear
End If
Next r
End Sub

Anzeige
AW: VBA: Daten aus Liste kopieren und anfügen
20.01.2019 13:36:04
K
Hallo, Onur, hallo, Rob,
danke für Eure schnelle Rückmeldung. Ich habe eine Excel-Datei angefügt, in der ich auch noch einmal die gewünschte Funktionsweise beschrieben habe. Auch Robs Makro habe ich eingefügt.
Das Kopieren und Leeren in Tabelle1 funktioniert, das Anfügen in Tabelle2 klappt noch nicht.
Ich danke Euch für Eure Unterstützung, beste Grüße, Kai
AW: VBA: Daten aus Liste kopieren und anfügen
20.01.2019 14:14:42
K
Alles funktioniert!
Ich danke Dir, Onur,
vielen Dank auch an Rob.
Beste Grüße! Kai.
Anzeige
AW: VBA: Daten aus Liste kopieren und anfügen
20.01.2019 16:29:04
Rob
Hi Onur,
folgende Anmerkungen zu Deinem Makro (nicht als Kritik sondern als Anregung zu verstehen):
lzQ und lzZ sind sehr schlechte Namen für Variablen und entsprechen keiner Konvention. Besser ist sprechende Namen zu vergeben (wahlweise Pascal oder CamelCase - Hungarian finde ich schlecht leserlich und die meisten Programmierer auch).
Außerdem sollte man aus verschiedensten Gründen den Variablen Werte zuweisen (Integer, String , etc.).
Du verweist auch wirrkürlich auf die jeweiligen Arbeitsblätter bzw. in den meisten Fällen ist überhaupt kein Verweis vorhanden. Sehr gefährlich, weil ein Klick vom User Deinen Code zerschießt (ActiveSheet ist in diesem Kontext genauso zu vermeiden, wie .Select etc. Wenn Der User in einem anderen Arbeitsblatt ist, ist Dein Code hinfällig).
ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
Besser:
Sheets(1).Cells(Sheets(1).Rows.Count, 2).End(xlUp).Row
Also ich würde Dein Makro auf keinen Fall verwenden, weil viel zu gefährlich bzw. fehleranfällig.
Hoffe Du fasst das richtig auf!
LG,
Rob
Anzeige
AW: VBA: Daten aus Liste kopieren und anfügen
20.01.2019 18:10:01
onur
Es könte ja auch sein, dass der Code aus einer anderen Datei aufgerufen wird, deswegen sollte man vielleicht auch noch dazu schreiben:
Workbooks("XYZ.xlsm").Sheets(1).Cells(Sheets(1).Rows.Count, 2).End(xlUp).Row

Und woher weisst du, dass der Code vom ERSTEN Blatt aus aufgerufen wird?
"Also ich würde Dein Makro auf keinen Fall verwenden, weil viel zu gefährlich bzw. fehleranfällig" - Na und? MUSST du ja auch nicht.
Anstatt Codes von Helfern zu bewerten, solltest du den Hilfesuchenden helfen, denn DAS ist nämlich Sinn und Zweck eines solchen Forums.
Anzeige

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige