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

Range - Copy Destination & PasteSpecial

Forumthread: Range - Copy Destination & PasteSpecial

Range - Copy Destination & PasteSpecial
06.10.2013 23:15:34
Thomas
Hallo!
Dank Franz habe ich gedacht ich kann selbst weiterbasteln... aber weitgefehlt, ich bin draufgekommen dass ich eigentlich nur die WERTE kopieren darf da in dem Ausgangssheet teilweise Formeln vorhanden sind ,) soweit so schlecht, da Range Copy - wie von Franz unten sehr elegant verwendet offensichtlich (laut Dr. Google) keine Paste Special Zusätze erlaubt, richtig? Oder gibt es doch eine Möglichkeit so - und falls nicht wie müsste es aussehen wenn man's mit PasteSpecial machen muss?
danke schon wieder....
lg Thomas
Sub MonatsZusammenfassung()
Dim strOrdner As String, strTagZusFass As String
Dim lngZeile As Long
Dim wksMonatZusFass As Worksheet
Dim strTagDatei As String
Dim wkbTag As Workbook, wksTAF As Worksheet
Set wksMonatZusFass = ActiveSheet 'Zieltabelle
With wksMonatZusFass
strTagZusFass = .Range("B5").Text
strOrdner = .Range("B6").Text
'Zeilen in SPlate A ab Zeile 10 abarbeiten
For lngZeile = 10 To .Cells(.Rows.Count, 1).End(xlUp).Row    'Korrektur Zeile -- lngZeile
'Prüfen, ob leer
If .Cells(lngZeile, 1) = "" Then Exit For
'Eintrag in Spalte A
strTagDatei = .Cells(lngZeile, 1).Text
'Prüfen, ob Datei vorhanden
If Dir(strOrdner & Application.PathSeparator & strTagDatei)  "" Then 'Korrektur strPfad  _
_
-- strOrdner
'Datei schreibgeschützt öffnen
Set wkbTag = Application.Workbooks.Open(Filename:=strOrdner & _
Application.PathSeparator & strTagDatei, ReadOnly:=True)  'Korrektur strPfad --   _
_
strOrdner
Set wksTAF = wkbTag.Worksheets("TAF")
'Daten nach Ziel kopieren
wksTAF.Range("C3").Copy Destination:=.Cells(lngZeile, 2)
'Tages-Datei wieder schliessen
wkbTag.Close savechanges:=False
End If
Next
End With
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Warum eigentlich Copy?
07.10.2013 01:25:25
Erich
Hi Thomas,
wenn du nur Werte übertragen willst, heißt das doch eigentlich nur, dass der Wert in wksMonatZusFass
gleich dem Wert in wksTAF werden soll. Dazu muss man nicht kopieren. Probier doch mal anstelle der Zeile
wksTAF.Range("C3").Copy Destination:=.Cells(lngZeile, 2)
die einfache Wertzuweisung
.Cells(lngZeile, 2) = wksTAF.Range("C3").Value
oder
.Cells(lngZeile, 2) = wksTAF.Cells(3, 3).Value
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Range - Copy Destination & PasteSpecial
07.10.2013 16:28:24
Bastian
Hallo Thomas,
und wenn Du unbedingt PasteSpecial verwenden möchtest, dann so:
  wksTAF.Range("C3").Copy
.Cells(lngZeile, 2).PasteSpecial Paste:=xlPasteValues
Gruß, Bastian

Rückmeldung in neuem Thread
08.10.2013 00:45:29
Erich
Hi Thomas,
hier hast du uns deine Rückmeldung zukommen lassen. Danke!
Ich schreibe das an dieser Stelle nur, um zu demonstrieren, dass man in diesem Thread antworten kann.
Grüße aus Kamp-Lintfort von Erich
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

Excel VBA: Copy Destination und PasteSpecial effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf das Projektfenster und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Sub MonatsZusammenfassung()
       Dim strOrdner As String, strTagZusFass As String
       Dim lngZeile As Long
       Dim wksMonatZusFass As Worksheet
       Dim strTagDatei As String
       Dim wkbTag As Workbook, wksTAF As Worksheet
       Set wksMonatZusFass = ActiveSheet 'Zieltabelle
    
       With wksMonatZusFass
           strTagZusFass = .Range("B5").Text
           strOrdner = .Range("B6").Text
    
           For lngZeile = 10 To .Cells(.Rows.Count, 1).End(xlUp).Row
               If .Cells(lngZeile, 1) = "" Then Exit For
               strTagDatei = .Cells(lngZeile, 1).Text
    
               If Dir(strOrdner & Application.PathSeparator & strTagDatei) <> "" Then
                   Set wkbTag = Application.Workbooks.Open(Filename:=strOrdner & _
                   Application.PathSeparator & strTagDatei, ReadOnly:=True)
                   Set wksTAF = wkbTag.Worksheets("TAF")
    
                   ' Hier kannst du entscheiden, ob du Copy Destination oder Wertzuweisung verwendest
                   wksTAF.Range("C3").Copy Destination:=.Cells(lngZeile, 2)
                   ' oder
                   '.Cells(lngZeile, 2) = wksTAF.Range("C3").Value
    
                   wkbTag.Close savechanges:=False
               End If
           Next
       End With
    End Sub
  4. Führe das Makro aus: Kehre zurück zu Excel und drücke ALT + F8, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: „Objektvariable nicht festgelegt“

    • Lösung: Stelle sicher, dass alle Objekte (wie wksTAF und wkbTag) korrekt gesetzt sind, bevor du darauf zugreifst.
  • Fehler: „Datei nicht gefunden“

    • Lösung: Überprüfe den Pfad und den Dateinamen in strOrdner. Achte darauf, dass der Dateiname korrekt und die Datei tatsächlich vorhanden ist.

Alternative Methoden

Wenn du nur Werte kopieren möchtest und nicht die gesamte Formatierung, kannst du die PasteSpecial-Methode nutzen:

wksTAF.Range("C3").Copy
.Cells(lngZeile, 2).PasteSpecial Paste:=xlPasteValues

Alternativ kannst du auch direkt den Wert zuweisen:

.Cells(lngZeile, 2) = wksTAF.Range("C3").Value

Praktische Beispiele

  1. Kopieren von Werten ohne Formatierung:

    wksTAF.Range("C3").Copy
    .Cells(lngZeile, 2).PasteSpecial Paste:=xlPasteValues
  2. Einfache Wertzuweisung statt Kopieren:

    .Cells(lngZeile, 2) = wksTAF.Cells(3, 3).Value

Diese Methoden sind besonders nützlich, wenn du nur die Werte aus einer Zelle in eine andere Zelle kopieren möchtest.


Tipps für Profis

  • Wenn du häufig mit Copy und PasteSpecial arbeitest, solltest du die Leistung deiner Makros im Auge behalten. Die direkte Zuweisung von Werten ist oft schneller und ressourcenschonender.

  • Nutze Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren. Stelle sie am Ende mit Application.ScreenUpdating = True wieder ein.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen gleichzeitig kopieren?
Du kannst den Bereich anpassen, z.B.:

wksTAF.Range("C3:C10").Copy Destination:=.Cells(lngZeile, 2)

2. Was ist der Unterschied zwischen Copy Destination und PasteSpecial?
Copy Destination ist eine direkte Methode, um Werte zu kopieren, während PasteSpecial ermöglicht, spezifische Formate wie nur Werte, nur Formate usw. zu übertragen.

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