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

Forumthread: Kopieren ohne .copy

Kopieren ohne .copy
01.11.2019 22:41:35
Alexander
Hallo,
ich möchte gerne Zellen kopieren(mit Formeln und Formatierung) ohne dafür copy verwenden zu müssen. Im Augenblick mach ich das so:
Dim rg As Range
With Workbooks("S_Tool(1)")
Set rg = Sheets("Data").Range("AH1:AQ3")
rg.Copy
Sheets("Sverweis-Auswahl").Range("E2").PasteSpecial
End With
Ich würde es aber lieber ohne copy machen so ungefähr:
Dim rg As Range
With Workbooks("S_Tool(1)")
Set rg = Sheets("Data").Range("AH1:AQ3")
Sheets("Sverweis-Auswahl").Range("E2").Resize(rg.Rows.Count, rg.Columns.Count) = rg.Value
End With
Das Problem dabei ist natürlich, dass ich so nur den Text Inhalt bekomme und nicht alle Zellwerte.
Hat jemand eine Idee wie ich das in dem zweiten Beispiel trotzdem hinbekommen könnte ohne copy und ohne das ganze aufzublähen.
Gruß
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Kopieren ohne .copy
02.11.2019 06:53:01
Hajo_Zi
dass ist aufwendige.
Du mnusst jede Eigenschaft wie
- Schriftart
- Fett
- kursiv
- Rahmen oben
- usw
einzeln übertragen.Viel Erfolg für diesen langen weg.

AW: Kopieren ohne .copy
02.11.2019 09:42:05
Oberschlumpf
Hi Alexander,
mich würde mal interessieren, wieso du ohne .Copy kopieren willst?
Ciao
Thorsten
Anzeige
Eventuelle Alternative?
02.11.2019 10:14:41
Martin
Hallo Alexander,
auch wenn meine Antwort nicht ganz deiner Aufgabenstellung entspricht, wäre folgender Code vielleicht auch in Ordnung für dich?
Sub Beispiel()
Sheets("Data").Range("AH1:AQ3").Copy Sheets("Sverweis-Auswahl").Range("E2")
End Sub
Übrigens wird in deinem Beispielcode die Angabe...
With Workbooks("S_Tool(1)")

...ignoriert und das Makro wird immer in der aktiven Arbeitsmappe ausgeführt.
Wenn du das Makro aus einer anderen aktiven Arbeitsmappe startest und dein Makro trotzdem nur in T_Tools(1) ausgeführt werden soll, müsste der Code so aussehen:
Sub Beispiel()
With Workbooks("S_Tool(1)")
.Sheets("Data").Range("AH1:AQ3").Copy .Sheets("Sverweis-Auswahl").Range("E2")
End With
End Sub
Der Punkt vor dem Sheets verweist auf das Objekt der With-Anweisung (also auf die Arbeitsmappe S_Tool(1).
Viele Grüße
Martin
Anzeige
AW: Eventuelle Alternative?
02.11.2019 13:06:24
Alexander
Hallo zusammen,
Danke für Eure Antworten.
Der Grund ist, dass ich inzwischen ein relativ komplexes Excel Projekt habe, mit dem auch mehrere Leute arbeiten, daher habe ich angefangen jeden Codeteil auf Geschwindigkeit zu überprüfen und möglichst viel mit globalen variabeln zu machen damit nicht alles zusammenbricht wenn jemand mal eine Spalte hinzufügen möchte oder den Namen von etwas ändert. Und ich habe festgestellt, dass "copy" mehr Zeit beansprucht als es direkt zuzuordnen, daher hab ich alle "copy" entfernt, da meistens nur Daten transferiert werden ist das ja kein Problem, ich hab aber auch ein paar Stellen wo eben zusätzlich Formeln und ein Layout transportiert werden sollen, und da klappt es so nicht, ich hätte aber einfach gerne alles im gleichen Style, das gibt mir ein besseres Gefühl :D
Ich dachte, vielleicht gibt es ne Möglichkeit die ich nicht sehe. Ansonsten lass ich an den paar Stellen eben einfach das .copy.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zellen kopieren in Excel ohne .copy


Schritt-für-Schritt-Anleitung

Um Zellen in Excel zu kopieren, ohne die Methode .Copy zu verwenden, kannst du die folgenden Schritte befolgen:

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

  2. Füge ein neues Modul hinzu: Rechtsklicke auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".

  3. Gib den folgenden Code ein:

    Sub ZellenKopierenOhneCopy()
        Dim rg As Range
        With Workbooks("S_Tool(1)")
            Set rg = .Sheets("Data").Range("AH1:AQ3")
            .Sheets("Sverweis-Auswahl").Range("E2").Resize(rg.Rows.Count, rg.Columns.Count).Value = rg.Value
        End With
    End Sub
  4. Führe das Makro aus: Schließe den Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro aus und klicke auf "Ausführen".

Damit überträgst du die Werte der Zellen, jedoch ohne die Formatierungen.


Häufige Fehler und Lösungen

  1. Fehlende Formatierungen: Wenn du nur die Werte überträgst, gehen die Formatierungen verloren. Um die Formatierungen ebenfalls zu übertragen, musst du diese manuell nach jedem Kopiervorgang setzen.

  2. Falsche Arbeitsmappe: Wenn das Makro nicht in der richtigen Arbeitsmappe ausgeführt wird, stelle sicher, dass der Name der Arbeitsmappe korrekt eingegeben ist und dass sie geöffnet ist.

  3. Lange Ausführung: Wenn du viele Zellen kopierst, kann es länger dauern. Überlege, ob du nur die notwendigen Zellen kopieren kannst.


Alternative Methoden

Eine weitere Möglichkeit, um das Format zu übertragen, ist die Nutzung von PasteSpecial. Hier ist ein Beispiel:

Sub ZellenKopierenMitFormat()
    Dim rg As Range
    With Workbooks("S_Tool(1)")
        Set rg = .Sheets("Data").Range("AH1:AQ3")
        rg.Copy
        .Sheets("Sverweis-Auswahl").Range("E2").PasteSpecial Paste:=xlPasteAllUsingSourceTheme
    End With
End Sub

Hierbei wird das Format zusammen mit den Werten übertragen.


Praktische Beispiele

  • Beispiel 1: Übertragen von Werten und Formatierungen ohne .Copy:

    Sub WerteUndFormatKopieren()
        Dim rg As Range
        With Workbooks("S_Tool(1)")
            Set rg = .Sheets("Data").Range("AH1:AQ3")
            .Sheets("Sverweis-Auswahl").Range("E2").Resize(rg.Rows.Count, rg.Columns.Count).Value = rg.Value
            .Sheets("Sverweis-Auswahl").Range("E2").Resize(rg.Rows.Count, rg.Columns.Count).Interior.Color = rg.Interior.Color
        End With
    End Sub
  • Beispiel 2: Nutzung von Excel Shortcuts:

    Nutze STRG + C und STRG + V für einfaches Kopieren und Einfügen, wenn du nicht mit VBA arbeiten möchtest.


Tipps für Profis

  • VBA für mehr Geschwindigkeit: Verwende globale Variablen, um die Geschwindigkeit zu erhöhen, besonders bei großen Datenmengen.
  • Verwende Application.ScreenUpdating = False: Dies kann die Ausführungszeit des Makros erheblich reduzieren, indem die Bildschirmaktualisierung während der Ausführung deaktiviert wird.

    Sub PerformanceOptimieren()
        Application.ScreenUpdating = False
        ' Dein Code hier
        Application.ScreenUpdating = True
    End Sub

FAQ: Häufige Fragen

1. Warum sollte ich Copy vermeiden?
Das Verwenden von Copy kann langsamer sein, besonders bei großen Datenmengen. Direktes Zuweisen der Werte kann effizienter sein.

2. Kann ich auch Formeln ohne Copy übertragen?
Ja, du kannst Formeln ebenfalls übertragen, indem du rg.Formula anstelle von rg.Value verwendest.

3. Gibt es eine Möglichkeit, alle Zellformatierungen auf einmal zu übertragen?
Ja, das ist möglich, indem du die Eigenschaften der Zellen direkt überträgst, aber es erfordert mehr Code, um alle Formatierungsoptionen zu berücksichtigen.

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