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

Einfaches Copy und PasteSpecial funktioniert nicht

Einfaches Copy und PasteSpecial funktioniert nicht
02.08.2019 13:21:39
AleXSR700
Hallo zusammen,
ich versuche zu lernen, deshalb stelle ich eine für euch bestimmt banale Frage.
Ich möchte Zellen von einem Arbeitsblatt in ein anderes kopieren. Das funktioniert auch, wenn ich Zelle für Zelle kopiere. Aber wenn ich eine Range kopieren will, dann bekomme ich einen Laufzeitfehler 1004, Anwendungs- oder objektdefinierten Fehler.
Die gleiche Syntax funktioniert aber in einem anderen Codeabschnitt problemlos.
Sub Export_einlesen()
Dim Dateiname As String
Dim i As Integer
Dim iRow As Integer
Dim iColumn As Integer
Dim LRow As Integer
Dim LColumn As Integer
Dim Lwb As Workbook
LRow = 1
LColumn = 1
iRow = 10
iColumn = 2
Do Until Worksheets("Export").Cells(LRow + 1, 1)  Worksheets("Export").Cells(LRow, 1)
Worksheets("Export").Range(Cells(LRow, LColumn), Cells(LRow, LColumn + 9)).Copy
Worksheets("Batch").Cells(iRow, iColumn).PasteSpecial
If IsEmpty(Worksheets("Export").Cells(LRow + 1, 1)) Then Exit Do
Loop
End Sub
Er stört sich jedesmal am Copy & Paste. Ich weiss aber nicht wieso. Kann es an Zellformatierungen in der Quelle o. ä. liegen?
Ich würde ungern Zelle für Zelle kopieren. Das funktioniert zwar, ist aber hier weniger "elegant".
Vielen Dank für eure Hilfe und viele Grüße

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einfaches Copy und PasteSpecial funktioniert nicht
02.08.2019 13:51:32
fcs
Hallo Alex,
in der Zeile in der Range kopiert werden soll ist die Referenz für Cells nicht angegeben,
Je nachdem welches Tabellenblatt das aktive Blatt ist oder in welchem Modul das Makro gespeichert ist gibt es einen Objektfehler.
Probiere es mal so:

Sub Export_einlesen()
Dim Dateiname As String
Dim i As Integer
Dim iRow As Integer
Dim iColumn As Integer
Dim LRow As Integer
Dim LColumn As Integer
Dim Lwb As Workbook
LRow = 1
LColumn = 1
iRow = 10
iColumn = 2
With Worksheets("Export")
Do Until .Cells(LRow + 1, 1)  .Cells(LRow, 1)
.Range(.Cells(LRow, LColumn), .Cells(LRow, LColumn + 9)).Copy
Worksheets("Batch").Cells(iRow, iColumn).PasteSpecial
If IsEmpty(.Cells(LRow + 1, 1)) Then Exit Do
LRow = LRow + 1 '?
'            iRow = iRow + 1 '?
Loop
End With
End Sub
LG
Franz
Anzeige
AW: Einfaches Copy und PasteSpecial funktioniert nicht
02.08.2019 13:51:49
Piet
Hallo
du hast zwar "PasteSpecial" angegeben, sagst im Code aber nicht welche Funktion Paste ausführen soll!!
Da gibt es: - .PasteSpecial xlPasteAll, xlPasteValues, xlPasteFormulas, usw. - irgendwas MUSST du angeben!!
xlPasteAll kopiert alles, auch alle Zellformate! xlPastValues kopiert NUR WERTE, kopiert KEINE Formate!
Du kannst nur Formeln als Formel kopieren, Formate, und noch andere Funktionen. Schau mal bei Microsoft. Ist sehr umfangreich.
mfg Piet
AW: Einfaches Copy und PasteSpecial funktioniert nicht
02.08.2019 15:33:55
AleXSR700
Hallo Piet, hallo fcs,
danke für eure Rückmeldungen.
@Piet:
Man kann, soweit ich das sehe, auch ohne PasteAll, PasteValue etc. das PasteSpecial benutzen. Funktioniert zumindest bei mir bisher immer problemlos.
@fcs:
Es liegt tatsächlich daran, dass ich den Code im Arbeitsblatt "Batch" angelegt habe. Lege ich ihn in "Export", dann funktioniert es.
Weisst du, wie ich es hinbekomme, dass der code im Arbeitsblatt "Batch" liegen kann? Das Export wird nämlich bei jedem mal neu erzeugt und danach wieder gelöscht. Nur Batch bleibt erhalten.
Anzeige
AW: Einfaches Copy und PasteSpecial funktioniert nicht
02.08.2019 15:57:33
Nepumuk
Hallo Alex,
so sollte es aus jeder Tabelle heraus funktionieren:
Option Explicit

Public Sub Export_einlesen()
    Dim Dateiname As String
    Dim i As Long
    Dim iRow As Long
    Dim iColumn As Long
    Dim LRow As Long
    Dim LColumn As Long
    Dim Lwb As Workbook
    
    LRow = 1
    LColumn = 1
    iRow = 10
    iColumn = 2
    
    With Worksheets("Export")
        
        Do Until .Cells(LRow + 1, 1).Value <> .Cells(LRow, 1).Value
            .Range(.Cells(LRow, LColumn), .Cells(LRow, LColumn + 9)).Copy
            Worksheets("Batch").Cells(iRow, iColumn).PasteSpecial
            If IsEmpty(.Cells(LRow + 1, 1).Value) Then Exit Do
            
        Loop
    End With
End Sub

Die Zähler hochsetzen musst du noch einbauen.
Gruß
Nepumuk
Anzeige
AW: Einfaches Copy und PasteSpecial funktioniert nicht
02.08.2019 16:18:01
fcs
Hallo Alex,
die Lösung hat ich in meiner Antwort schon geschrieben.
Ist ähnlich der von Nepomuk
LG
Franz

152 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige