ClearContents Laufzeitfehler 1004
#1
Hallo zusammen,

ich bin Neuling in diesem Forum und auf dem Gebiet VBA in Excel. In meinem Programm werden bestimmte Zeilen aus einer Mappe, in bestimmte Zellen einer Tabelle einer andere Mappe kopiert. Ich möchte darüber hinaus, dass vorher der Inhalt der Zellen in der Tabelle gelöscht werden.
Das Programm funktioniert ohne die ClearContents Zeile so wie ich mir das vorstelle, jedoch hängt sich beim Einfügen und Starten mit ClearContents mein Excel auf und bekomme die Fehlermeldung Laufzeitfehler 1004.

Ich weiß, das Programm ist etwas unglücklich geschrieben, aber ich wusste nicht wie ich es anders lösen konnte.

Ich hoffe ihr könnt mir auf die Sprünge helfen und vielen Dank im Voraus.

Sub Daten()
Worksheets("Daily Management").Range("D22:D177,F22:P177,S22:S177").ClearContents
Dim a As Long, i As Long
Application.ScreenUpdating = False
a = 22
For i = 2 To 10000
With Worksheets("TAT Raw")
If .Cells(i, "J") = "6" Or .Cells(i, "J") = "4" Or .Cells(i, "J") = "2" Or .Cells(i, "J") = "1" Then
Worksheets("Daily Management").Cells(a, 4).Value = Worksheets("TAT Raw").Cells(i, 20).Value
Worksheets("Daily Management").Cells(a, 6).Value = Worksheets("TAT Raw").Cells(i, 7).Value
Worksheets("Daily Management").Cells(a, 7).Value = Worksheets("TAT Raw").Cells(i, 8).Value
Worksheets("Daily Management").Cells(a, 9).Value = Worksheets("TAT Raw").Cells(i, 17).Value
Worksheets("Daily Management").Cells(a, 10).Value = Worksheets("TAT Raw").Cells(i, 6).Value
Worksheets("Daily Management").Cells(a, 11).Value = Worksheets("TAT Raw").Cells(i, 4).Value
Worksheets("Daily Management").Cells(a, 12).Value = Worksheets("TAT Raw").Cells(i, 14).Value
Worksheets("Daily Management").Cells(a, 14).Value = Worksheets("TAT Raw").Cells(i, 19).Value
Worksheets("Daily Management").Cells(a, 15).Value = Worksheets("TAT Raw").Cells(i, 21).Value
Worksheets("Daily Management").Cells(a, 16).Value = Worksheets("TAT Raw").Cells(i, 18).Value
Worksheets("Daily Management").Cells(a, 19).Value = Worksheets("TAT Raw").Cells(i, 2).Value
Worksheets("Daily Management").Cells(a, 95).Value = Worksheets("TAT Raw").Cells(i, 10).Value
a = a + 1
End If
End With
Next i
Application.ScreenUpdating = True
End Sub
Top
#2
Hallo

war Quatsch

MfG Tom
Top
#3
Hallo,

das:

Code:
Worksheets("Daily Management").Range("D22:D177,F22:P177,S22:S177").ClearContents


müsste gleich dem


Code:
Worksheets("Daily Management").Range("D22:D177,F22:S177").ClearContents


sein.

Wegen der Fehlermeldung, hast Du verbundene Zellen die diesen Bereich tangieren?
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • ReleaseVS
Top
#4
Hallo Atilla,

(06.02.2017, 00:49)atilla schrieb:
Code:
Worksheets("Daily Management").Range("D22:D177,F22:P177,S22:S177").ClearContents
müsste gleich dem
Code:
Worksheets("Daily Management").Range("D22:D177,F22:S177").ClearContents
sein.

Bis auf den Unterschied der zusätzlichen Spalten Q:R. Wink

(06.02.2017, 00:49)atilla schrieb: Wegen der Fehlermeldung, hast Du verbundene Zellen die diesen Bereich tangieren?

das vermute ich auch. Deshalb vielleicht einfach mit

Code:
Worksheets("Daily Management").Range("D22:D177,F22:P177,S22:S177") = ""

probieren.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • ReleaseVS
Top
#5
(06.02.2017, 01:07)Kuwer schrieb: Bis auf den Unterschied der zusätzlichen Spalten Q:R. Wink

sind ja nur zwei Spalten.....

......mit ges. etwas mehr als zwei Millionen Zeilen :19:
Gruß Atilla
Top
#6
Etwas kürzer und schneller (natürlich ungetestet); schaffe die verbundenen Zellen aus der Welt!
Code:
Option Base 1

Sub Daten2()
Z = Worksheets("Daily Management").[A1:CZ177]
Q = Worksheets("TAT Raw").[A1:U9999]
x = Array(10, 7, 8, 17, 6, 4, 14, 19, 21, 18, 2, 10)
y = Array(4, 6, 7, 9, 10, 11, 12, 14, 15, 16, 19, 95)
a = 22
For i = 2 To 9999
  If Q(i, 10) = 6 Or Q(i, 10) = 4 Or Q(i, 10) = 2 Or Q(i, 10) = 1 Then
     For j = 1 To 12
        Z(a, y(j)) = Q(i, x(j))
     Next
     a = a + 1
  End
Next
Worksheets("Daily Management").[A1:CZ177] = Z
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an lupo1 für diesen Beitrag:
  • ReleaseVS
Top
#7
Vielen Dank für Eure Hilfe. Hat nun super geklappt!

@Lupo1:
Vielen Dank für den Code. Allerdings hab ich hiermit noch meine Probleme.
Die Zeile "Z(a, y(j)) = Q(i, x(j))" löst bei mir noch einen Laufzeitfehler 9 aus. 
Hast du hierfür einen Tipp für mich?

Vielen Dank im Voraus.
Top
#8
Hallöchen,

erst mal nur rein logisch Smile Falls Du mehr als 177 Treffer hast, ist das verständlich.

Du definierst einen Bereich
Z = Worksheets("Daily Management").[A1:CZ177]

und gehst in Deiner Schleife bis 9999
For i = 2 To 9999

Die Zeilennummer der Treffer verwendest Du so:
Z(a, y(j)) = Q(i, x(j))
und setzt den "Treffer-Zähler" dann hoch
a = a + 1
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Ich kann die einzelnen Funktionen nachvollziehen und weiß was gemacht wird. Jedoch kann ich nicht nachvollziehen, was Excel denn mit "Index außerhalb des gültigen Bereichs" meint. 
Ich bekomme auch keine Veränderung wenn ich die Bereiche ändere oder eine neue Excel Datei mit Test Werten nehme.
Top
#10
Hallo,

hast DU MAL
CZ177
in
CZ9999
geändert?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste