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

Nicht zusammenhängende Bereiche kopieren

Forumthread: Nicht zusammenhängende Bereiche kopieren

Nicht zusammenhängende Bereiche kopieren
12.06.2013 23:12:30
Albert
Hallo liebe VBA-Experten,
ich will von einer Tabelle Werte aus den Bereichen C bis J kopieren und in einer zweiten Tabelle an derselben Stelle einfügen. Zwischen den zu kopierenden Zeilen liegen jeweils 8 Zeilen.
Meine Versuche, das Problem zu lösen sind kläglich gescheitert. Vielleicht kann mir jemand von Euch bei meinem unten dargestellten VBA-Code weiterhelfen.
Es haben sich ein paar Probleme ergeben:
1) Union(Cells .....)).copy funktioniert nicht
2) Tabelle1 in Zieldatei kann nicht angesprochen werden
Sub Werte_importieren()
Dim Pfad_lokal As String
Pfad_lokal = Range("G2")
Dim wbZiel As Workbook
Dim wbQuelle As Workbook
Set wbZiel = ThisWorkbook
Set wbQuelle = Workbooks.Open(Range("G2"))
Dim lR%, i%
Dim lX%, n%
Dim intRow As Integer
'wbQuelle.Tabelle1.Select
lR = Cells(Rows.Count, 3).End(xlUp).Row
For i = 204 To 12 Step -8
Cells(i, 10).Copy    'Union(Cells(i, 3), Cells(i, 9), Cells(i, 10)).Copy -> funktioniert  _
nicht
wbZiel.Tabelle1.Select 'funktioniert nicht
lX = Cells(Rows.Count, 3).End(xlUp).Row
For n = 204 To 12 Step -8
Cells(n, 10).Paste
Next i
Next n
wbQuelle.Close SaveChanges:=False
Set wbQuelle = Nothing
Set wbZiel = Nothing
End Sub

Vielen Dank im Voraus und schönen Abend
Albert

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nicht zusammenhängende Bereiche kopieren
13.06.2013 07:17:02
Hajo_Zi
Hallo Albert,
das ist in Excel nicht möglich, also auch nicht in VBA.
Gruß Hajo

Danke Hajo
13.06.2013 18:14:04
Albert
Hallo Hajo,
danke für die Rueckmeldung
Gruß
Albert

AW: Nicht zusammenhängende Bereiche kopieren
13.06.2013 08:16:03
Tino
Hallo,
nicht zusammenhängende Zellen in einer Zeile musst Du einzeln kopieren.
Wenn Du mit den Objektnamen der Tabellen arbeiten willst,
muss man wissen dass diese nur in der Datei wo der Code steht direkt angesprochen werden können.
Sind diese in einer anderen (hier die Quelle) muss diese erst gesucht werden.
Wenn Dir der Registername bekannt ist, kannst Du diese auch so
Set wsQuelle = wbQuelle.Worksheets("Tabelle1")
direkt ohne suche verwenden.
Hier mal eine Variante die funktionieren sollte. (habe diesen jetzt nicht getestet)
Sub Werte_importieren()
Dim Pfad_lokal As String
Dim wsZiel As Worksheet
Dim wbQuelle As Workbook, wsQuelle As Worksheet, rngQuelle As Range
Dim nRQ&, nRZ&
Pfad_lokal = Range("G2")
Set wsZiel = Tabelle1
Set wbQuelle = Workbooks.Open(Pfad_lokal)
''nach Objektnamen der Tabelle suchen oder
'Set wsQuelle = wbQuelle.Worksheets("Tabelle1")
''verwenden
For Each wsQuelle In wbQuelle.Worksheets
If wsQuelle.Name = "Tabelle1" Then Exit For
Next wsQuelle
If Not wsQuelle Is Nothing Then
With wsQuelle
For nRQ = 204 To 12 Step -8
nRZ = wsZiel.Cells(wsZiel.Rows.Count, 3).End(xlUp).Row + 1
For Each rngQuelle In Union(.Cells(nRQ, 3), .Cells(nRQ, 9), .Cells(nRQ, 10))
'nur Werte
wsZiel.Cells(nRZ, rngQuelle.Column).Value = rngQuelle.Value
'            'kopieren mit Formel
'            rngQuelle.Copy wsZiel.Cells(nRZ, rngQuelle.Column)
Next rngQuelle
Next nRQ
End With
Else
MsgBox "Tabelle1 nicht als Objektname gefunden!"
End If
wbQuelle.Close SaveChanges:=False
End Sub
Gruß Tino

Anzeige
Vielen Dank Tino
13.06.2013 18:12:17
Albert
Hallo Tino,
ich habe gerade Deinen Beitrag gelesen und werde heute Abend Deine Variante testen. Ich werde auf jeden Fall im Forum Bescheid geben ob es funktioniert hat.
Vorerst einmal vielen herzlichen Dank
Albert
;
Anzeige

Infobox / Tutorial

Nicht zusammenhängende Bereiche in Excel kopieren


Schritt-für-Schritt-Anleitung

Um nicht zusammenhängende Bereiche in Excel zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code kopiert Werte aus bestimmten Zellen einer Tabelle und fügt sie in eine andere Tabelle ein. Achte darauf, dass der Code in einer Excel-Version getestet wurde, die VBA unterstützt.

Sub Werte_importieren()
    Dim Pfad_lokal As String
    Dim wsZiel As Worksheet
    Dim wbQuelle As Workbook, wsQuelle As Worksheet, rngQuelle As Range
    Dim nRQ&, nRZ&
    Pfad_lokal = Range("G2")
    Set wsZiel = Tabelle1
    Set wbQuelle = Workbooks.Open(Pfad_lokal)

    For Each wsQuelle In wbQuelle.Worksheets
        If wsQuelle.Name = "Tabelle1" Then Exit For
    Next wsQuelle

    If Not wsQuelle Is Nothing Then
        With wsQuelle
            For nRQ = 204 To 12 Step -8
                nRZ = wsZiel.Cells(wsZiel.Rows.Count, 3).End(xlUp).Row + 1
                For Each rngQuelle In Union(.Cells(nRQ, 3), .Cells(nRQ, 9), .Cells(nRQ, 10))
                    wsZiel.Cells(nRZ, rngQuelle.Column).Value = rngQuelle.Value
                Next rngQuelle
            Next nRQ
        End With
    Else
        MsgBox "Tabelle1 nicht als Objektname gefunden!"
    End If
    wbQuelle.Close SaveChanges:=False
End Sub

Häufige Fehler und Lösungen

  1. Error: Union-Methoden funktionieren nicht
    Stelle sicher, dass die Zellen, die du mit Union kombinieren möchtest, im selben Arbeitsblatt liegen. Wenn nicht, musst du die Zellen einzeln kopieren.

  2. Error: Tabelle nicht gefunden
    Überprüfe, ob die Tabelle, die du ansprechen möchtest, tatsächlich den Namen "Tabelle1" trägt. Ansonsten musst du den Namen im Code anpassen.

  3. Error: Workbook kann nicht geöffnet werden
    Stelle sicher, dass der Pfad in Zelle G2 korrekt ist und die Datei existiert. Prüfe auch, ob du die notwendigen Berechtigungen hast, um die Datei zu öffnen.


Alternative Methoden

Wenn du keine VBA-Skripte verwenden möchtest, kannst du auch manuell nicht zusammenhängende Bereiche kopieren, indem du:

  1. Die erste Zelle mit Strg+Klick auswählst.
  2. Die weiteren Zellen ebenfalls mit Strg+Klick auswählst.
  3. Mit Strg+C kopierst und dann in die Zielzelle mit Strg+V einfügst.

Diese Methode ist jedoch weniger effizient bei großen Datenmengen.


Praktische Beispiele

Angenommen, du hast die folgende Struktur in deiner Tabelle:

  • Zellen C204, I204, J204 enthalten die Daten, die du kopieren möchtest.
  • Die nächsten zu kopierenden Zellen befinden sich bei C196, I196 und J196, usw.

Mit dem obigen VBA-Code kannst du diese Zellen effizient kopieren, ohne sie einzeln auswählen zu müssen.


Tipps für Profis

  • Verwende Option Explicit am Anfang deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Teste deinen Code in einer Kopie deiner Arbeitsmappe, um Datenverlust zu verhindern.
  • Nutze Fehlerbehandlungsroutinen in deinem VBA-Code, um unerwartete Fehler abzufangen und zu behandeln.

FAQ: Häufige Fragen

1. Kann ich auch Formeln kopieren?
Ja, du kannst anstelle von .Value auch .Copy verwenden, um die Formeln zu kopieren. Achte jedoch darauf, dass die Zellbezüge korrekt sind.

2. Funktioniert dieser Code auch in Excel Online?
Nein, der VBA-Code funktioniert nur in Desktopversionen von Excel. Excel Online unterstützt derzeit keine VBA-Makros.

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