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

Copy and Paste in VBA

Forumthread: Copy and Paste in VBA

Copy and Paste in VBA
26.03.2007 11:17:00
michael.loop@beiersdorf.com
Hi,
ich hab folgendes Problem:
Ich will ein Bereich (Größe ist immer unterschiedlich) kopieren und diesen in einem anderen Blatt ab einer bestimmte Zelle einfügen. Dazu habe ich folgenden Code geschrieben:
Range("B1001:BC1001", Selection.End(xlDown)).Copy
Range("P" & letzteZ).Paste
letzteZ ist eine Variable die einen Integer Wert hat (hier 85). Jedoch sagt er mir beim Ausführen immer "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Das ist doof. Bitte helft mir.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Copy and Paste in VBA
26.03.2007 11:25:00
Oberschlumpf
Hi
Versuch mal
Range("B1001:BC1001", Selection.End(xlDown)).Copy
Range("P" & letzteZ).Select
ActiveSheet.Paste
Konnte ich helfen?
Ciao
Thorsten
AW: Copy and Paste in VBA
26.03.2007 11:29:42
michael.loop@beiersdorf.com
Leider nicht.
Das Problem bei deiner Lösung ist, dass die Anzeige nun hin und her springt, weil Excel jedesmal bei [Range("P" & letzteZ).Select] die Zelle richtig anfässt und markiert. Bei meinem Programm würde er das dann ca. 1000 mal machen und das flackert dann extrem auf dem Bildschirm.
Aber danke für den Versuch....
Anzeige
AW: Copy and Paste in VBA
26.03.2007 11:34:02
Oberschlumpf
na ja, du hast nich erwähnt, dass der Code sich in einer For/Next oder Do/Loop oder was weiß ich für einer Schleife befindet....
hättest du uns auch darüber informiert, hätte ich dir vllt schon in meiner ersten Antwort geschrieben, dass du an erster Stelle diese Zeile schreibst:
Application.ScreenUpdating = False
und in die letzte Zeile deines Codes dies hier:
Application.ScreenUpdating = True
So ist das nun mal, wenn man nur die Hälfte erzählt.
Ach ja, ein "Hallo xy" wird in diesem Forum am Anfang IMMER gern gesehen
Anzeige
AW: Copy and Paste in VBA
26.03.2007 11:41:00
Michael
Hallo Oberschlumpf,
danke für den Tipp mit dem ScreenUpdating. So müsste es wohl funktionieren. Aber eigentlich ist das doch eher eine unsaubere Art zu programmieren. In meinem Fall genügt dies wohl, aber allgemein gesehen .....
Vielen Dank trotzdem.
AW: Copy and Paste in VBA
26.03.2007 11:46:00
Oberschlumpf
"Aber eigentlich ist das doch eher eine unsaubere Art "
hmm, was willst du?
Du stellst hier ne Frage mit UNVOLLSTÄNDIGEN Informationen, erwartest aber eine ALLUMFASSENDE Lösung
eine qualifizierte Antwort erwartet eine QUALIFIZIERTE FRAGESTELLUNG!!!
Du fragst etwas, was du nich weißt, nimmst dir dann aber heraus, etwas zu beurteilen, was du ja selbst nicht weißt...
Solche wie du sind mir die Richtigen
Ach ja, ich heiße Thorsten, nicht Oberschlumpf
Anzeige
AW: Copy and Paste in VBA
26.03.2007 11:59:00
mpb
Hallo Michael,
ohne "Hüpferei":
Range("B1001:BC1001", Selection.End(xlDown)).Copy Destination:=Range("P" & letzteZ)
Zu Deiner Anmerkung zum ProgrammierstiL:
Was Du mit Range("B1001:BC1001", Selection.End(xlDown)) erreichen willst ist mir unklar. Select oder Selection sind zu 99% überflüssig, mitunter sogar schädlich.
Und statt Range("P" & letzteZ) ist Cells(letzteZ, 16) eleganter und in Schleifen leichter verarbeitbar.
Gruß
Martin
Anzeige
AW: Copy and Paste in VBA
26.03.2007 12:04:00
Michael
Hi Martin,
das ist Super, genau das was ich brauchte.
Das Select und Selection zu 99% nicht gut sind, habe ich auch schon öfters gelesen oder gehört und stimme dem voll zu. Leider bin ich noch nicht so gut in VBA, dass ich das immer vermeiden kann, aber ich arbeite dran.
Genauso mit Cells(xxx). Das kannte ich noch gar nicht, hab bis jetzt immer mit "Range" gearbeitet, dafür auch danke.
Gruß Michael
Anzeige
;

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

Infobox / Tutorial

Effizientes Kopieren und Einfügen mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um einen Bereich in Excel mithilfe von VBA effizient zu kopieren und einzufügen, kannst du folgende Schritte befolgen:

  1. Bereich kopieren: Verwende den Copy Befehl, um den gewünschten Bereich zu kopieren. Zum Beispiel:

    Range("B1001:BC1001", Selection.End(xlDown)).Copy
  2. Zielbereich festlegen: Anstatt den Zielbereich mit Select auszuwählen, kannst du direkt angeben, wo der Inhalt eingefügt werden soll:

    Range("P" & letzteZ).PasteSpecial
  3. Bildschirmaktualisierung deaktivieren: Um Flackern zu vermeiden, solltest du die Bildschirmaktualisierung ausschalten:

    Application.ScreenUpdating = False

    Und am Ende deines Codes wieder aktivieren:

    Application.ScreenUpdating = True
  4. Verwende .Paste: Alternativ kannst du die Destination-Eigenschaft nutzen, um den Code noch effizienter zu gestalten:

    Range("B1001:BC1001", Selection.End(xlDown)).Copy Destination:=Range("P" & letzteZ)

Häufige Fehler und Lösungen

  • Fehler: "Objekt unterstützt diese Eigenschaft oder Methode nicht"
    Lösung: Stelle sicher, dass du die Copy- und Paste-Methoden korrekt anwendest. Vermeide unnötige Select-Befehle.

  • Flackern beim Einfügen
    Lösung: Aktiviere Application.ScreenUpdating = False zu Beginn und Application.ScreenUpdating = True am Ende deines Codes, um das Flackern zu minimieren.


Alternative Methoden

  • Verwendung von Cells: Anstelle von Range kannst du Cells verwenden, was die Lesbarkeit und Wartbarkeit deines Codes erhöht:

    Cells(letzteZ, 16).PasteSpecial
  • Direktes Einfügen: Anstatt Selection.Paste, nutze Destination, um die Effizienz zu steigern:

    Range("B1001:BC1001").Copy Destination:=Cells(letzteZ, 16)

Praktische Beispiele

Hier ist ein einfaches Beispiel für das Kopieren und Einfügen eines Bereichs in Excel VBA:

Sub CopyAndPasteExample()
    Dim letzteZ As Long
    letzteZ = 85 ' Beispielwert für die Zielzeile
    Application.ScreenUpdating = False

    ' Kopieren des Bereichs
    Range("B1001:BC1001", Selection.End(xlDown)).Copy Destination:=Range("P" & letzteZ)

    Application.ScreenUpdating = True
End Sub

Tipps für Profis

  • Vermeide Select: Die Verwendung von Select und Selection kann den Code unnötig verkomplizieren und verlangsamen. Versuche, diese zu vermeiden.

  • Nutze With-Anweisung: Mit der With-Anweisung kannst du mehrere Eigenschaften eines Objekts effizient setzen:

    With Range("B1001:BC1001")
      .Copy Destination:=Range("P" & letzteZ)
    End With
  • Verwende Application.CutCopyMode: Um den Auswahlrahmen nach dem Einfügen zu entfernen, setze Application.CutCopyMode auf False.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen gleichzeitig kopieren?
Du kannst mehrere Zellen mit dem Range-Objekt kopieren, indem du den gewünschten Bereich angibst, z.B. Range("A1:B10").Copy.

2. Was ist der Unterschied zwischen Copy und Paste?
Copy kopiert den Inhalt eines Bereichs in den Zwischenspeicher, während Paste den Inhalt aus dem Zwischenspeicher in einen angegebenen Bereich einfügt.

3. Wie kann ich verhindern, dass Excel beim Einfügen springt?
Deaktiviere die Bildschirmaktualisierung mit Application.ScreenUpdating = False vor dem Einfügen und aktiviere sie danach wieder.

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