Microsoft Excel

Herbers Excel/VBA-Archiv

VBA: Daten aus Liste kopieren und anfügen


Betrifft: VBA: Daten aus Liste kopieren und anfügen von: K M
Geschrieben am: 19.01.2019 22:12:26

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.

  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: onur
Geschrieben am: 19.01.2019 23:02:19

Eine Beispieldatei wäre angebracht.


  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: Rob
Geschrieben am: 19.01.2019 23:58:52

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



  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: K M
Geschrieben am: 20.01.2019 13:33:46

https://www.herber.de/bbs/user/126948.xlsm


  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: K M
Geschrieben am: 20.01.2019 13:36:04

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


  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: onur
Geschrieben am: 20.01.2019 14:03:08

https://www.herber.de/bbs/user/126951.xlsm


  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: K M
Geschrieben am: 20.01.2019 14:14:42

Alles funktioniert!

Ich danke Dir, Onur,
vielen Dank auch an Rob.

Beste Grüße! Kai.


  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: Rob
Geschrieben am: 20.01.2019 16:29:04

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


  

Betrifft: AW: VBA: Daten aus Liste kopieren und anfügen von: onur
Geschrieben am: 20.01.2019 18:10:01

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.


Beiträge aus dem Excel-Forum zum Thema "VBA: Daten aus Liste kopieren und anfügen "