Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Range kopieren und woanders einfügen

VBA - Range kopieren und woanders einfügen
Wurstmensch
Hallo zusammen,
diesmal hängt es bei mir an folgendem Problem: In meinem Blatt 1 stehen von B1 bis C20 Daten (fester Bereich). Die sollen selektiert und kopiert werden, um sie anschließend auf Blatt 2 in den Spalten B und C wieder einzufügen. Allerdings sind dort schon Daten vorhanden, ich möchte per VBA die erste freie Zeile ermitteln und dann die (bis zu) 20 Werte ab der ersten freie Zelle einfügen.
Anmerkungen: Die Daten in den Spalten B und C sind ohne Leerzeilen dazwischen ausgefüllt, also ist die erste freie Zelle gleichzeitig auch das Ende des Datenblocks. Außerdem sind die Daten immer als Tupel vorhanden, es kommt also nicht vor, dass in Spalte B ein Eintrag ist, aber der zugehörige Wert in C fehlt. Ihr braucht deshalb keine komplizierten Abfragen zu schreiben, um irgendwas Fallkonstellationen abzufangen :)
Wie immer schonmal herzlichen Dank im Voraus.
Grüße
Wurstmensch
Anzeige

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

Betreff
Benutzer
Anzeige
Eltern wg.Namen verklagt ?
19.09.2011 11:55:10
robert
Hi,
als Nickname OK,
aber als Gruß ?
Da sollte schon ein richtiger Name stehen ;-)
Gruß
robert
Ich lachte ob deines Betreffs
19.09.2011 12:40:40
Wurstmensch
Na dann: Fühl dich aufs herzlichste von mir gegrüßt, Robert.
Rene
AW: VBA - Range kopieren und woanders einfügen
19.09.2011 11:55:26
Rudi
Hallo,

Sub xxx()
With Sheets(1)
.Range(.Cells(1, 2), .Cells(Rows.Count, 3).End(xlUp)).Copy _
Sheets(2).Cells(Rows.Count, 2).End(xlUp).Offset(1)
End With
End Sub
Gruß
Rudi
Anzeige
AW: VBA - Range kopieren und woanders einfügen
19.09.2011 12:54:21
Wurstmensch
Funktioniert tadellos. Dankeschön, Rudi.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Range kopieren und woanders einfügen


Schritt-für-Schritt-Anleitung

Um einen Bereich in Excel mithilfe von VBA zu kopieren und an einer anderen Stelle einzufügen, kannst Du den folgenden Code verwenden. Hierbei wird ein fester Bereich von Blatt 1 (B1:C20) kopiert und in die erste freie Zeile von Blatt 2 eingefügt:

Sub BereichKopierenUndEinfügen()
    With Sheets(1)
        .Range(.Cells(1, 2), .Cells(20, 3)).Copy _
        Sheets(2).Cells(Rows.Count, 2).End(xlUp).Offset(1)
    End With
End Sub
  1. Öffne den VBA-Editor (ALT + F11).
  2. Füge ein neues Modul ein (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Führe das Makro aus (ALT + F8, wähle "BereichKopierenUndEinfügen" und klicke auf "Ausführen").

Häufige Fehler und Lösungen

  • Fehler: "Anwendungs- oder Objektfehler"

    • Lösung: Überprüfe, ob die Blätter "Blatt 1" und "Blatt 2" existieren. Stelle sicher, dass sie exakt so benannt sind.
  • Fehler: Zu viele Zeilen kopiert

    • Lösung: Stelle sicher, dass Du den richtigen Bereich angibst. Der Code oben nutzt .Cells(20, 3), um sicherzustellen, dass nur bis zur 20. Zeile kopiert wird.

Alternative Methoden

Eine alternative Methode, um einen Bereich zu kopieren, ist die Verwendung von Range.Copy:

Sub BereichKopierenMitRangeCopy()
    Dim Ziel As Range
    Set Ziel = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Offset(1)
    Sheets(1).Range("B1:C20").Copy Destination:=Ziel
End Sub

Diese Methode vermeidet die Verwendung von .Copy und ermöglicht es Dir, direkt den Zielbereich zu definieren.


Praktische Beispiele

Wenn Du beispielsweise nur die Werte und nicht die Formatierung kopieren möchtest, kannst Du den folgenden Code verwenden:

Sub WerteKopierenUndEinfügen()
    Dim Ziel As Range
    Set Ziel = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Offset(1)
    Sheets(1).Range("B1:C20").Copy
    Ziel.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

Dies ist besonders hilfreich, wenn Du nur die Daten ohne Formatierungen in einem anderen Bereich einfügen möchtest.


Tipps für Profis

  • Automatisiertes Kopieren: Wenn Du regelmäßig Daten kopieren musst, könnte es sinnvoll sein, das Makro in ein Ereignis zu integrieren, wie z.B. das Öffnen des Arbeitsblattes.
  • Verwende Variablen für dynamische Bereiche: Statt fester Zellreferenzen kannst Du Variablen verwenden, um den Bereich dynamisch zu bestimmen, was den Code flexibler macht.

FAQ: Häufige Fragen

1. Kann ich auch nur eine bestimmte Anzahl von Zeilen kopieren?
Ja, Du kannst die Zeilenanzahl in der .Range-Methode anpassen.

2. Wie kann ich den kopierten Bereich formatieren?
Nach dem Einfügen kannst Du die Formatierung mit VBA anpassen, z.B. durch das Setzen von Ziel.Font.Bold = True.

3. Was mache ich, wenn ich einen Fehler beim Ausführen des Makros erhalte?
Überprüfe die Referenzen auf die Blätter und die Zelladressen, um sicherzustellen, dass sie korrekt sind.

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