Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten in VBA Schleife aus einer anderen Tabelle kopieren

Daten in VBA Schleife aus einer anderen Tabelle kopieren
06.01.2020 16:58:06
Yuyu
Hallo liebe VBA Experten!
Nachdem ich jetzt lange Zeit vergebens versucht habe ein funktionierendes Makro zu bauen, wende ich mich nun an euch. Folgendes ist die Situation:
Ich habe in der Zeile 18 eine Zelle mit Formel, welche anhand eines vierstelligen Firmencodes verfügbare Produkte aufzählt. Diese Formel arbeitet über die Textjoin Funktion, z.B. wenn der Firmencode in Zelle B8 0001 ist, dann steht in Zelle D18 "Verfügbare Produkte: 0009 Schrauben, 0110 Muttern, 0200 Nägel". Diese Zelle bildet sich aus verfügbaren Produkten in einer anderen Tabelle.
Soweit funktioniert alles. Leider gibt es über 100 dieser Firmencodes und ich möchte ungerne alles manuell kopieren und einfügen.
Die Firmencodes befinden sich in einer Tabelle namens "EU" und beginnen in der Zelle A2. Der Firmencode steht in der Tabelle "Final" in Zelle B8.
Der zu kopierende Inhalt befindet sich in den Zeilen 14 bis 18.
Der untenstehende Code schafft es nun die Zelle A3 in B8 zu kopieren und dieses auch unendlich zu wiederholen, springt aber dann nicht weiter zur Zelle A4, A5 und so weiter.
Vielleicht kann ja jemand hier helfen...
Vielen Dank!!
Sub CopyPaste()
Dim WSQuelle As Worksheet
Dim WSZiel As Worksheet
Dim lZeile As Long
Set WSQuelle = ThisWorkbook.Worksheets("EU")
Set WSZiel = ThisWorkbook.Worksheets("Final")
For lZeile = 1 To WSZiel.Cells(Rows.Count, 1).End(xlUp).Row
If WSQuelle.Range("A" & lZeile).Value  "" Then
WSZiel.Range("B8") = WSQuelle.Range("A3").Value
Rows("14:18").Select
Selection.Copy
Rows("19:19").Select
Selection.Insert Shift:=xlDown
Rows("20:23").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next lZeile
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in VBA Schleife aus einer anderen Tabelle kopieren
06.01.2020 19:39:44
Piet
Hallo yuyu
am besten laedst du eine Besipeildatei mit anonymen Daten hoch, wo man vor allem die Bereiche Rows("14:18"), Rows("19:19") und Rows("20:23") sehen kann was da genau passiert. Es fehlt zum Beispiel die Angabe in welchem Blatt sich da was veraendert? So immer im aktiven Blatt, aber welches ist Aktiv?
Um unnötige Rückfragen und Missverstaendnisse zu vermeiden geht es am schnellst über ein Beispiel, wo du die gewünschte Lösung von Hand vorgibst. Auch mit den Formeln die kopiert oder verschoben werden.
mfg Piet
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten in VBA Schleife aus einer anderen Tabelle kopieren


Schritt-für-Schritt-Anleitung

Um Daten in einer Excel VBA Schleife aus einer anderen Tabelle zu kopieren, kannst du folgendes Vorgehen nutzen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub CopyPaste()
        Dim WSQuelle As Worksheet
        Dim WSZiel As Worksheet
        Dim lZeile As Long
    
        Set WSQuelle = ThisWorkbook.Worksheets("EU")
        Set WSZiel = ThisWorkbook.Worksheets("Final")
    
        For lZeile = 2 To WSQuelle.Cells(Rows.Count, 1).End(xlUp).Row
            If WSQuelle.Range("A" & lZeile).Value <> "" Then
                WSZiel.Range("B8").Value = WSQuelle.Range("A" & lZeile).Value
                WSZiel.Rows("14:18").Copy
                WSZiel.Rows("19:19").Insert Shift:=xlDown
                Application.CutCopyMode = False
            End If
        Next lZeile
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  1. Fehler: "Objekt erforderlich"

    • Lösung: Stelle sicher, dass die Blattnamen ("EU" und "Final") korrekt sind.
  2. Fehler: Daten werden nicht kopiert

    • Lösung: Prüfe, ob die Zellen in der Quelle tatsächlich Werte enthalten und dass du mit dem richtigen Bereich arbeitest.
  3. Fehler: Schleife kopiert nicht alle Zeilen

    • Lösung: Achte darauf, dass der Startwert in der Schleife korrekt gesetzt ist (hier 2, um die erste Zeile zu überspringen).

Alternative Methoden

Eine andere Methode, um Daten zu kopieren, ist die Verwendung der TEXTJOIN-Funktion in Excel, falls du die Werte in einer einzigen Zelle zusammenfassen möchtest. Du könntest ein Makro erstellen, das diese Funktion anwendet, um eine Liste von verfügbaren Produkten zu generieren.

Hier ein Beispiel, wie du TEXTJOIN in VBA verwenden kannst:

Dim Produkte As String
Produkte = Application.WorksheetFunction.TextJoin(", ", True, WSQuelle.Range("B2:B10"))
WSZiel.Range("D18").Value = "Verfügbare Produkte: " & Produkte

Praktische Beispiele

Angenommen, du hast folgende Werte in der Tabelle "EU":

A (Firmencode)
0001
0002
0003

Und möchtest die Produkte für jeden Firmencode in der Tabelle "Final" kopieren, die in den Zeilen 14 bis 18 aufgelistet sind. Der oben angegebene Code erledigt dies automatisch und fügt die Daten untereinander ein.


Tipps für Profis

  • Verwende Option Explicit: Am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.

  • Fehlerbehandlung: Füge On Error Resume Next ein, um Laufzeitfehler zu vermeiden und die Ausführung des Makros nicht zu stoppen.

  • Optimierung: Deaktiviere Bildschirmaktualisierungen während der Schleife mit Application.ScreenUpdating = False, um die Ausführung zu beschleunigen.


FAQ: Häufige Fragen

1. Wie kann ich die Schleife anpassen, um nur bestimmte Firmencodes zu kopieren?
Du kannst eine If-Bedingung in deine Schleife einfügen, um nur bestimmte Werte zu überprüfen.

2. Kann ich die Daten auch in eine andere Datei kopieren?
Ja, du musst das Ziel-Workbook mit Workbooks.Open öffnen und dann die entsprechenden Zellen dort ansteuern.

3. Was ist der Unterschied zwischen Copy und PasteSpecial?
Copy kopiert die Zellen einschließlich Formatierungen, während PasteSpecial dir erlaubt, nur Werte oder Formate zu übertragen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige