Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 1004: Paste-Methode...

Laufzeitfehler 1004: Paste-Methode...
24.03.2021 18:06:41
M11

Sub Verteile_Daten()
'Screen-Update ausschalten
Application.ScreenUpdating = False
Dim a, b, x As Integer
Dim d, e As Date
'Zähle Blätter
Dim ws_count As Integer
ws_count = ActiveWorkbook.Worksheets.count
Dim i As Integer
'Start ab Blatt 2: Daten_...
For i = 3 To ws_count
'Anzahl der zu kopierenden Zeilen je FNR
a = Application.WorksheetFunction.Match(Application.WorksheetFunction.Max(Sheets(i).Range("  _
_
_
C:C")), Sheets(i).Range("C:C"), 0) - 5
'Anzahl der FNRs (Summe aller Tage / Summe Tage für eine FNR)
b = Application.WorksheetFunction.count(Sheets(i).Range("C:C")) / a
'Datum zum Abgleich
d = Application.WorksheetFunction.Max(Sheets(i).Range("C:C"))
For x = 0 To (b - 1)
'Bereich je FNR kopieren
Range(Sheets(i).Cells(6 + a * x, 3), Sheets(i).Cells(5 + (a * (x + 1)), 18)).Copy
'Datei der entsprechenden FNR deklarieren: Pfad ändern, wenn nötig
Dim Ordner, name, datei As String
Ordner = "G:\PRM\Reports\PassiveMandate_v2\"
name = Sheets(i).Cells(6 + a * x, 4).Value
datei = Ordner & name & ".xlsx"
'ausgewählte Datei öffnen und kopierte Zellen unterhalb der letzten Zeile einfügen ( _
sofern Daten noch nicht eingefügt)
Workbooks.Open (datei)
e = Application.WorksheetFunction.Max(Sheets("Rohdaten").Range("A:A"))
'Wenn Datum vorhanden, dann Datei schließen
If d = e Then
ActiveWorkbook.Close SaveChanges:=False
Else
'hier wird eingefügt, Formeln erweitert, Format übernommen, gespeichert und Datei  _
geschlossen
Dim lastRow As Integer
lastRow = Sheets("Rohdaten").Cells(Rows.count, "A").End(xlUp).Row + 1
Sheets("Rohdaten").Paste Destination:=Sheets("Rohdaten").Cells(lastRow, 1)
Worksheets("Rohdaten").Activate
With Sheets("Rohdaten")
Set SourceRange = .Range(Cells(lastRow - 1, 17), Cells(lastRow - 1, 32))
Set FillRange = .Range(Cells(lastRow - 1, 17), Cells(lastRow + a - 1, 32))
SourceRange.AutoFill Destination:=FillRange
End With
Worksheets("Rohdaten").Range(Cells(lastRow - 1, 1), Cells(lastRow - 1, 16)).Copy
Worksheets("Rohdaten").Range(Cells(lastRow - 1, 1), Cells(lastRow + a - 1, 16)). _
PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
ActiveWorkbook.Close SaveChanges:=True
End If
Next x
Next i
'Screen-Update anschalten
Application.ScreenUpdating = True
End Sub


Hallo zusammen,
mit diesem Code habe ich bisher Daten von einer Excel-Dateien in eine andere Excel-Datei kopiert. Aus irgendeinem Grund läuft das Makro jetzt nur noch bis zum Einfügen, eingefügt wird nicht und ich erhalte folgenden Fehler:
Laufzeitfehler 1004: Die Paste-Methode dieses Worksheet-Objekts kann nicht ausgeführt werden. Meine Vermutung war, dass es an der Formatierung im Zielobjekt liegt. Habe schon alles Mögliche ausprobiert, aber es funktioniert nicht. Vielleicht hat jemand eine Idee, woran es liegen könnte. Bislang hatte der Code immer einwandfrei funktioniert und ich weiß leider nicht, was der Auslöser war, dass er nun nicht mehr funktioniert. Rückfragen gerne!
VG

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004: Paste-Methode...
24.03.2021 18:24:00
onur
OHNE die Datei (Beispielsdatei) wäre es nur Herumraterei.

AW: Laufzeitfehler 1004: Paste-Methode...
24.03.2021 18:30:05
AlterDresdner
Hallo,
hast Du mal überprüft, ob
a=Application.WorksheetFunction.Match...
einen vernünftigen Wert zurückgibt und keinen Fehler?
Gruß der AlteDresdner

AW: Laufzeitfehler 1004: Paste-Methode...
25.03.2021 09:03:22
M11
Hallo, danke für den Hinweis. Wenn ich den Code mit F8 ausführe, kommt an dieser Stelle "Die Match-Eigenschaft des WorksheetFunction-Objekts kann nicht zugeordnet werden."
Gruß

AW: Laufzeitfehler 1004: Paste-Methode...
25.03.2021 09:22:15
Daniel
Hi
Dann schau dir mal die Spalte C des Sheets an, welches gerade in Bearbeitung ist (Sheets(i)).
Diese müsste leer sein oder nur Texte bzw als Text formatierte Zahlen enthalten.
Max(C:C) ist dann 0, aber das ist nicht in der Spalte enthalten, so dass es die Match-Funktion nichts finden kann und den Fehler ausgibt.
Damit der Code läuft, muss Spalte C eine Zahl enthalten.
Das kannst du vorab mit
if worksheetfunction.Count(Sheets(i).Range("C:C")) > 0 then

abfragen.
Gruß Daniel

Anzeige
AW: Laufzeitfehler 1004: Paste-Methode...
24.03.2021 18:42:48
Daniel
Hi
Obs jetzt die Ursache für den Fehler ist, weiß ich nicht, ab du hast wieder mal DEN Fehler drin, den alle mnachen.
Wird das irigend wo absichtlich so gelehrt?
Bei Range(Cells(), Cells()) mit Tabellenblattangabe muss das Tabellenblatt vor den beiden Cells stehen, nicht vor der Range!
Vor der Range darf es stehen, aber dann muss es das selbe Tabellenblatt sein wie vor den beiden Cells!
Die Cells ohne Tabellenblattangabe beziehen sich auf das aktive Blatt, auch wenn vor der Range ein Blatt angegeben ist.
Arbeitet man mit der With-Klammet, sollte man den Punkt hierfür nicht vergessen.
Zellbereiche lassen sich auch mit Cells().Resize() beschreiben, was hier die Wiederholungen des Tabellenblatts reduziert.
Gruß Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige