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

Forumthread: Was ist bei der For-Schleife falsch?

Was ist bei der For-Schleife falsch?
stefan
Hallo zusammen,
ich möchte Daten von einem Blatt kopieren - zeilenweise. Aber nur, wenn in der Zelle 12 der jeweiligen Zeile was drin steht und diese nicht leer ist.
Folgenden Code habe ich:
For iCntRows = 3 To 20
If Worksheets("Daten").Cells(iCntRows, 12) "" Then
Worksheets("Daten").Cells(iCntRows, 2).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 1)
Worksheets("Daten").Cells(iCntRows, 3).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 2)
Worksheets("Daten").Cells(iCntRows, 4).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 3)
Worksheets("Daten").Cells(iCntRows, 5).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 4)
Worksheets("Daten").Cells(iCntRows, 6).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 5)
Worksheets("Daten").Cells(iCntRows, 7).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 6)
Worksheets("Daten").Cells(iCntRows, 8).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 7)
Worksheets("Daten").Cells(iCntRows, 9).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 8)
Worksheets("Daten").Cells(iCntRows, 10).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 9)
Worksheets("Daten").Cells(iCntRows, 11).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 10)
Worksheets("Daten").Cells(iCntRows, 12).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 11)
Worksheets("Daten").Cells(iCntRows, 13).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 12)
Worksheets("Daten").Cells(iCntRows, 14).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 13)
Worksheets("Daten").Cells(iCntRows, 15).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 14)
Worksheets("Daten").Cells(iCntRows, 16).Copy ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 15)
End If
Next iCntRows
Leider werden die leeren Zellen aus dem Ursprungsblatt mitkopiert.
Was mache ich falsch?
Danke Euch vielmals.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Was ist bei der For-Schleife falsch?
11.10.2011 11:16:14
marcl
Hallo Stefan,
ich die Zelle wirklich leer? Mit Trim werden Leerzeichen am Anfang und ende abgeschnitten.
If Trim(Worksheets("Daten").Cells(iCntRows, 12)) "" Then
Vielleicht funktioniert es jetzt.
Gruß
marcl
AW: Was ist bei der For-Schleife falsch?
11.10.2011 11:17:42
Piet
Hallo Stefan,
bei mir nicht. Lad bitte eine Beispieldatei hoch, so kann ich keinen Fehler finden, außer dass die erste Zelle nicht mitkopiert wird.
Gruß
Piet
Anzeige
AW: Was ist bei der For-Schleife falsch?
11.10.2011 11:17:49
Rudi
Hallo,
Ursache sehe ich nicht.
Das reicht aber:

  With Worksheets("Daten")
For iCntRows = 3 To 20
If .Cells(iCntRows, 12)  "" Then
.Range(.Cells(iCntRows, 2), .Cells(iCntRows, 16)).Copy _
ThisWorkbook.Worksheets("Rohdaten").Cells(iCntRows - 1, 1)
End If
Next iCntRows
End With

Es sei denn, du tippst gerne ;-)
Gruß
Rudi
Anzeige
AW: Was ist bei der For-Schleife falsch?
11.10.2011 11:27:17
stefan
danke an Alle.
Leider werden immer noch leere Zellen mit einfügt. Ich bin echt ratlos. :-(
ermittle immer erst die letzte Zeile
11.10.2011 11:44:01
Matthias
Hallo
versuchs mal so:

 Sub test()
Dim iCntRows&
Dim Loletzte&
Loletzte = 1
With Worksheets("Daten")
For iCntRows = 3 To 20
If .Cells(iCntRows, 12)  "" Then
.Range(.Cells(iCntRows, 2), .Cells(iCntRows, 16)).Copy _
ThisWorkbook.Worksheets("Rohdaten").Cells(Loletzte, 1)
Loletzte = Worksheets("Rohdaten").Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
Next iCntRows
End With
End Sub
statt Loletzte = Worksheets("Rohdaten").Cells(Rows.Count, 1).End(xlUp).Row + 1
geht auch einfach Loletzte=Loletzte+1


Zieltabelle sollte natürlich vorher leer sein.
https://www.herber.de/bbs/user/76955.xls
Gruß Matthias
Anzeige
Zeil-Zähler
11.10.2011 11:28:42
Marc
Moin!
Du nimmst als Einfügemarke die kopierte Zeile minus 1, wenn du also eine Zeile überspringst, wird auch beim einfügen eine Zeile übersprungen.
Mach einen eigenen Zähler zum einfügen:

Sub Zeil_copy()
einfüg = 2
For iCntrows = 3 To 20
With Worksheets(1)
If .Cells(iCntrows, 12)  "" Then
.Range(.Cells(iCntrows, 2), .Cells(iCntrows, 16)).Copy Worksheets(2).Cells(einfüg,  _
1)
einfüg = einfüg + 1
End If
End With
Next iCntrows
End Sub

Gruß, Marc
Anzeige
AW: Zeil-Zähler
11.10.2011 11:37:36
stefan
Jaa, Marc. Das war es.
Vielen Dank!!
Ich schreib heute bestimmt noch die eine oder andere Frage hier :-)).
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige