Clever-Excel-Forum

Normale Version: ClearContents Laufzeitfehler 1004
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
Hallo

war Quatsch

MfG Tom
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?
Hallo Atilla,

(05.02.2017, 23: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

(05.02.2017, 23: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
(06.02.2017, 00: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:
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
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.
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
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.
Hallo,

hast DU MAL
CZ177
in
CZ9999
geändert?
Seiten: 1 2