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

Forumthread: Copy paste mit range als variable

Copy paste mit range als variable
18.07.2018 13:22:00
Ed
Hallo,
ich habe eine Arbeitsmappe (geöffnet ) mit dem Sheet "1". Nun möchte ich aus einer zweiten Arbeitsmappe, die ich gerade geöffnet habe vom Sheet "Tipp1" den Bereich F3:F33 in den Bereich F3:F33 von "1" kopieren.
Dabei ist F die Spalte im Ziel ("1") und muss variabel sein
Wie kann ich das Kopieren anstellen und wie kann ich den Bereich so Darstellen: Range("var3:var33)?
Range(cells(3,6),cells(33,6)) funktioniert nicht
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Copy paste mit range als variable
18.07.2018 13:45:49
Daniel
Hi
Im Prinzp so:
dim Sp als Long 'variable Kopierspalte
Sp = 6
ActiveWorkbook.Sheets("Tipp1").Cells(3, sp).Resize(31, 1).copy
ThisWorkbook.Sheets("1").Cells(3, sp).PasteSpecial xlpasteall
wenn du mit mehren Mappen oder auch Tabellen arbeitest, dann musst du bei Range(cells(3,6),cells(33,6)) die Mappe (Workbooks()) und das Tabellenblatt (Sheets()) vor den den beiden Cells innerhalb der Range angeben!
das wird dann unübersichtlich.
Range(Worbook(...).Sheets(...).cells(3,6),Workbooks(...).Sheets(...).cells(33,6))
Definiere einen größeren Zellbereich über Cells.Resize, dann musst du Workbook und Sheet nur 1x hinschreiben.
beim Einfügen reicht es aus, als Ziel die linke obere Zelle anzugeben, dh hier brauchst du keine Range, sonderen das einfache Cells reicht aus.
Gruß Daniel
Anzeige
AW: Copy paste mit range als variable
18.07.2018 14:07:59
Ed
Hallo Daniel,
funktionert einwandfrei! Ich wusste nicht, das man bei Range(cells()) die Angaben für Workbook und Worksheet machen muss. Nach Deiner Beschreibung aber eigentlich logisch.
Vielen Dank für Deine schnelle, qualifizierte Hilfe
Edgar
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Copy-Paste mit Range als Variable in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Variablen definieren: Lege eine Variable für die Spalte fest, die Du kopieren möchtest. Beispiel:

    Dim Sp As Long ' variable Kopierspalte
    Sp = 6 ' entspricht Spalte F
  2. Bereich kopieren: Verwende Cells und Resize, um den gewünschten Bereich zu kopieren. Beispiel:

    ActiveWorkbook.Sheets("Tipp1").Cells(3, Sp).Resize(31, 1).Copy
  3. Bereich einfügen: Füge den kopierten Bereich in das Zielblatt ein, indem Du nur die obere linke Zelle angibst:

    ThisWorkbook.Sheets("1").Cells(3, Sp).PasteSpecial xlPasteAll
  4. Workbook und Worksheet angeben: Wenn Du zwischen mehreren Arbeitsmappen und Tabellenblättern wechselst, stelle sicher, dass Du die richtigen Referenzen angibst:

    Workbooks("DeineMappe.xlsx").Sheets("Tipp1").Cells(3, Sp).Copy
    Workbooks("DeineZielMappe.xlsx").Sheets("1").Cells(3, Sp).PasteSpecial xlPasteAll

Häufige Fehler und Lösungen

  • Fehler: PasteSpecial-Methode des Range-Klasse fehlgeschlagen: Dies passiert oft, wenn das Zielblatt nicht existiert oder die Zielzelle ungültig ist. Stelle sicher, dass das Zielblatt und die Zelle korrekt angegeben sind.

  • Fehler bei Range(cells()): Wenn Du Range(cells()) verwendest, vergiss nicht, auch die Workbook- und Worksheet-Namen anzugeben, um Verwirrungen zu vermeiden.


Alternative Methoden

  • Direktes Kopieren ohne Range: Anstatt Range.Copy zu verwenden, kannst Du auch direkt Cells.Copy verwenden, was oft einfacher ist:

    ThisWorkbook.Sheets("1").Cells(3, Sp).Copy
  • Verwendung von Value: Wenn Du nur die Werte kopieren möchtest, kannst Du Value verwenden, um eine schnellere Ausführung zu erzielen:

    ThisWorkbook.Sheets("1").Cells(3, Sp).Value = ActiveWorkbook.Sheets("Tipp1").Cells(3, Sp).Value

Praktische Beispiele

Hier sind einige praktische Beispiele, um das Kopieren von Bereichen in Excel VBA zu verdeutlichen:

  1. Kopiere einen Bereich von einer Tabelle in eine andere:

    Dim Sp As Long
    Sp = 6 ' F-Spalte
    ' Kopiere von Tipp1 nach 1
    ActiveWorkbook.Sheets("Tipp1").Range(Cells(3, Sp), Cells(33, Sp)).Copy
    ThisWorkbook.Sheets("1").Cells(3, Sp).PasteSpecial xlPasteAll
  2. Schleife für mehrere Spalten:

    Dim Sp As Long
    For Sp = 6 To 10 ' F bis J
       ActiveWorkbook.Sheets("Tipp1").Cells(3, Sp).Resize(31, 1).Copy
       ThisWorkbook.Sheets("1").Cells(3, Sp).PasteSpecial xlPasteAll
    Next Sp

Tipps für Profis

  • Vermeide Select und Activate: Diese Methoden machen den Code langsamer und fehleranfällig. Arbeite stattdessen direkt mit den Objekten.

  • Nutze Application.ScreenUpdating = False: Deaktiviere die Bildschirmaktualisierung, um die Ausführung zu beschleunigen. Vergiss nicht, sie am Ende wieder zu aktivieren:

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

FAQ: Häufige Fragen

1. Wie kann ich den kopierten Bereich automatisch anpassen? Du kannst Resize verwenden, um die Größe automatisch anzupassen, basierend auf der Anzahl der Zeilen und Spalten, die Du kopieren möchtest.

2. Was ist der Unterschied zwischen Copy und Value? Copy kopiert das gesamte Format und die Inhalte, während Value nur die Werte in die Zielzelle einfügt, ohne das Format zu übernehmen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige