Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1232to1236
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

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.

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
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
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 :-)).
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige