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

Forumthread: Mehrere Spalten kopieren mit VBA

Mehrere Spalten kopieren mit VBA
05.04.2019 12:33:50
Anna
Hallo folgender Code:
Sheets("Broad").Range("B2:B & Sheets("Broad").UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy
With Worksheets("Keywords")
.Cells(.Rows.Count, 9).End(xlUp).Offset(1).PasteSpecial
Hier wird nur die Spalte ab B2 kopiert, aber ich will auch die Spalte P mitkopieren.
Sheets("Broad").Range("B2:B,P2:P & Sheets("Broad").UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy
Geht schonmal nicht.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Spalten kopieren mit VBA
05.04.2019 12:43:59
Marco
Hallo,
versuch mal:
Sheets("Broad").Range("B2:P & Sheets("Broad").UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy
With Worksheets("Keywords")
.Cells(.Rows.Count, 9).End(xlUp).Offset(1).PasteSpecial
AW: Mehrere Spalten kopieren mit VBA
05.04.2019 12:45:09
Anna
Wird da nicht alle Spalten von B bis P kopiert?
AW: Mehrere Spalten kopieren mit VBA
05.04.2019 12:50:44
Marco
Ja, sorry - mein Fehler - habe es beim Überfliegen falsch gelesen. Klar da kopiert er alle Spalten.
Anzeige
AW: Mehrere Spalten kopieren mit VBA
05.04.2019 12:44:00
Rudi
Hallo,
B braucht natürlich auch eine Zeilenangabe.
With Sheets("Broad")
.Range("B2:B & .UsedRange.Rows.Count,P2:P & .UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy
End With

Gruß
Rudi
AW: Mehrere Spalten kopieren mit VBA
05.04.2019 12:45:51
Daniel
Hallo Anna,
versuch es so

Dim lastRow as Long
lastRow = Sheets("Broad").UsedRange.Rows.Count
Sheets("Broad").Range("B2:B" & lastRow & ", P2:P" & lastRow).SpecialCells(xlCellTypeVisible). _
Copy
Gruß
Daniel
Anzeige
AW: Mehrere Spalten kopieren mit VBA
05.04.2019 12:49:52
Anna
Hallo Daniel,
vielen Danke, hat geklappt.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Spalten kopieren mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem du ALT + F11 drückst.

  2. Erstelle ein neues Modul: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Dim lastRow As Long
    lastRow = Sheets("Broad").UsedRange.Rows.Count
    Sheets("Broad").Range("B2:B" & lastRow & ", P2:P" & lastRow).SpecialCells(xlCellTypeVisible).Copy
    With Worksheets("Keywords")
       .Cells(.Rows.Count, 9).End(xlUp).Offset(1).PasteSpecial
    End With
  4. Passe die Arbeitsblattnamen ("Broad" und "Keywords") an deine Bedürfnisse an.

  5. Führe das Makro aus, um die Spalten zu kopieren.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Lösung: Stelle sicher, dass die Arbeitsblattnamen korrekt sind. Überprüfe die Schreibweise.

  • Fehler: "Bereich ist ungültig"
    Lösung: Vergewissere dich, dass du die Zeilenangaben in der Range korrekt angegeben hast. Die Syntax muss korrekt sein, also B2:B und P2:P.


Alternative Methoden

Eine alternative Methode, um mehrere Spalten zu kopieren, besteht darin, die Copy-Methode in einer Schleife zu verwenden. Dies kann hilfreich sein, wenn du dynamisch mehrere Spalten basierend auf bestimmten Bedingungen kopieren möchtest.

Dim ws As Worksheet
Set ws = Sheets("Broad")

Dim i As Integer
For i = 2 To ws.UsedRange.Columns.Count
    If ws.Cells(1, i).Value = "DeineBedingung" Then
        ws.Range(ws.Cells(2, i), ws.Cells(ws.UsedRange.Rows.Count, i)).Copy
    End If
Next i

Praktische Beispiele

Ein häufiges Szenario ist das Kopieren von Daten aus einer Tabelle, um sie in eine andere Tabelle einzufügen. Hier ist ein Beispiel, das die Spalten B und P von "Broad" in das nächste freie Feld auf dem Arbeitsblatt "Keywords" kopiert.

Sub CopyMultipleColumns()
    Dim lastRow As Long
    lastRow = Sheets("Broad").UsedRange.Rows.Count
    Sheets("Broad").Range("B2:B" & lastRow & ", P2:P" & lastRow).SpecialCells(xlCellTypeVisible).Copy
    With Worksheets("Keywords")
        .Cells(.Rows.Count, 9).End(xlUp).Offset(1).PasteSpecial
    End With
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Füge Fehlerbehandlungsroutinen hinzu, um mögliche Laufzeitfehler abzufangen und zu beheben.
  • Optimierung: Wenn du große Datenmengen kopierst, kannst du die Bildschirmaktualisierung temporär deaktivieren, um die Ausführung zu beschleunigen:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich mehr als zwei Spalten kopieren?
Um mehr Spalten zu kopieren, passe einfach die Range in deinem Code an, z.B. Sheets("Broad").Range("B2:D" & lastRow & ", P2:P" & lastRow).

2. Funktioniert das auch in Excel 365?
Ja, der bereitgestellte Code funktioniert in Excel 365 sowie in früheren Versionen, solange die VBA-Funktionalität unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige