Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1500to1504
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'

Laufzeitfehler '1004'
23.06.2016 08:10:23
Alex
Hallo Excel-Gemeinde,
zur Zeit bin ich an meinem Praxissemester an einem Tool dran. Es soll eine Abarbeitungsliste werden, bei der erledigte Aufträge archiviert werden sollen. Leider kommt beim Archivieren immer der Fehler
Laufzeitfehler '1004':
Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden.
Markiert wird : Worksheets("Tabelle1").Range(Cells(ErsteZeile, 1), Cells(ErsteZeile, 37)).PasteSpecial Paste:=xlPasteValues
Hier ist mal der gekürzt Quellcode

Private Sub CMD_Bereinigen_Click()
Dim Ende As Long
Dim ErsteZeile As Long
Dim Anfang As Long
Dim AnzahlZeilen As Long
Dim Abgeschlossen As Long
Dim ABVerzug As Long
ErsteZeile = Tabelle5.Cells(8, 1).Value
Abgeschlossen = Tabelle8.Cells(7, 2).Value
ABVerzug = Tabelle8.Cells(8, 2).Value
ActiveSheet.Range("$A$1:$AH$13").AutoFilter Field:=12, Criteria1:="Fertig"
Columns("A:AH").Select
Selection.EntireColumn.Hidden = False
Anfang = 3
AnzahlZeilen = 0
Ende = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Do While Trim(CStr(Tabelle1.Cells(Anfang, 1).Value))  ""
If Trim(CStr(Tabelle1.Cells(Anfang, 12).Value)) = "Fertig" Then
AnzahlZeilen = AnzahlZeilen + 1
If Trim(CStr(Tabelle1.Cells(Anfang, 29).Value))  ""
If Trim(CStr(Tabelle1.Cells(Anfang, 12).Value)) = "Fertig" Then
Tabelle1.Rows(Anfang).Delete
End If
Anfang = Anfang + 1
Loop
ActiveSheet.Range("$A$1:$AE$13").AutoFilter Field:=12
If AnzahlZeilen = 1 Then
MsgBox "Es wurde ein Datensatz archiviert."
End If
If AnzahlZeilen > 1 Then
MsgBox "Es wurden " & AnzahlZeilen & " Datensätze archiviert"
End If
Call CMD_Sortieren_Click
End Sub
Ich habe schon einige Beiträge gelesen, jedoch haben die mir nicht weitergeholfen.
Vielen dank schon mal im Voraus
Alex S.

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

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler '1004'
23.06.2016 08:32:19
Daniel
OK, mal wieder der Standardfehler, den wohl jeder Anfänger machen muss:
Du musst das worksheet vor JEDEM Cells, Range, Columns oder Rows angeben, wenn du mit mehreren Tabellenblättern arbeitest.
Auch vor den beiden Cells, die in der Range stehen.
Beim Einfügen reicht es in der Regel jedoch, nur die linke obere Zelle anzugeben, wenn kopiert er und einzufügen der Bereich gleich gross sind.
Gruß Daniel

AW: Laufzeitfehler '1004'
23.06.2016 09:07:03
Alex
Hallo Daniel,
danke für die schnelle Rückmeldung, aber gebracht hat es mir leider nichts. Ich habe ab dem Öffnen der zweiten Datei es dann so abgeändert gehabt, aber ohne Erfolg. Habe es auch noch so abgeändert dass nur die erste Zelle (oben links) gewählt wird.

Workbooks("Archiv.xlsm").Worksheets("Tabelle1").Range(Worksheets("Tabelle1").Cells(ErsteZeile,  _
1)).PasteSpecial Paste:=xlPasteValues
und

Workbooks("Archiv.xlsm").Worksheets("Tabelle1").Range(Workbooks("Archiv.xlsm").Worksheets(" _
Tabelle1").Cells(ErsteZeile, 1)).PasteSpecial Paste:=xlPasteValues
Code sieht nun so aus

Private Sub CMD_Bereinigen_Click()
Dim Ende As Long
Dim ErsteZeile As Long
Dim Anfang As Long
Dim AnzahlZeilen As Long
Dim Abgeschlossen As Long
Dim ABVerzug As Long
ErsteZeile = Tabelle5.Cells(8, 1).Value
Abgeschlossen = Tabelle8.Cells(7, 2).Value
ABVerzug = Tabelle8.Cells(8, 2).Value
ActiveSheet.Range("$A$1:$AH$13").AutoFilter Field:=12, Criteria1:="Fertig"
Columns("A:AL").Select
Selection.EntireColumn.Hidden = False
Anfang = 3
AnzahlZeilen = 0
Ende = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Do While Trim(CStr(Tabelle1.Cells(Anfang, 1).Value))  ""
If Trim(CStr(Tabelle1.Cells(Anfang, 12).Value)) = "Fertig" Then
AnzahlZeilen = AnzahlZeilen + 1
If Trim(CStr(Tabelle1.Cells(Anfang, 29).Value))  ""
If Trim(CStr(Tabelle1.Cells(Anfang, 12).Value)) = "Fertig" Then
Tabelle1.Rows(Anfang).Delete
End If
Anfang = Anfang + 1
If Trim(CStr(Tabelle1.Cells(Anfang, 12).Value)) = "Fertig" Then
Tabelle1.Rows(Anfang).Delete
End If
Loop
ActiveSheet.Range("$A$1:$AE$13").AutoFilter Field:=12
If AnzahlZeilen = 1 Then
MsgBox "Es wurde ein Datensatz archiviert."
End If
If AnzahlZeilen > 1 Then
MsgBox "Es wurden " & AnzahlZeilen & " Datensätze archiviert"
End If
Call CMD_Sortieren_Click
End Sub

Anzeige
AW: Laufzeitfehler '1004'
23.06.2016 09:41:40
Daniel
Hi
wenn du nur eine Zelle angeben willst, reicht Cells, Range wird nicht benötigt:
Worksheets("Tabelle1").Cells(ErsteZeile, 1).PasteSpecial Paste:=xlPasteValues

Eine Einzelzelle kannst du auch mit Range angeben, dann brauchst du aber kein Cells, sondern musst die Zelladresse als Textstring mit Spaltenbuchstaben und Zeilennummer angeben:
Worksheets("Tabelle1").Range("A" & ErsteZeile).PasteSpecial Paste:=xlPasteValues

Merke:
a) eine Zelle kann man direkt mit Cells(Zeile, Spalte) angeben.
b) einen Grösseren Zellbereich kann man mit Range beschreiben. Hierbei hat man zwei Möglichkeiten:
1. man gibt den Zellbereich als Adresse an, hierzu verwendet man einen Textstring:
Beispiele:
Range("A1")
Range("A1:J10")
Range("A1,B2,C3")

2. man gibt den Zellbereich über zwei Zellen an, welche obere linke und untere rechte Zelle des gesamten Bereichst beschreiben:
Beispiel:
Range(Cells(1, 1), Cells(10, 10))
gibt man nur eine Zelle an: Range(Celle(1, 1)) dann ist man im Fall 1, dh in der Zelle Cells(1, 1) muss als Wert ein Text stehen, der einer Zelladresse entspricht und die Zelle mit dieser Adresse wird dann mit der Range definiert.
Gruß Daniel

Anzeige
AW: Laufzeitfehler '1004'
23.06.2016 10:03:34
Alex
Hi,
einmal hat das Kopieren funktioniert, beim zweiten mal kommt wieder der Laufzeitfehler 1004 und wieder ist

Worksheets("Tabelle1").Cells(ErsteZeile, 1).PasteSpecial Paste:=xlPasteValues
gelb markiert.
Irgendwo muss da der Wurm drinn sein
Gruße
Alex

AW: Laufzeitfehler '1004'
23.06.2016 13:45:31
Alex
Hi,
hm, also da Du sagst, dass der Code beim ersten Mal klappt und die Codezeile eigentlich auch ok aussieht - ist 'ErsteZeile' dann auch immernoch gültig gesetzt?
Das wär jetzt die einzige Idee, die ich da noch hätte...
VG,
Alex

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige