none
Inhalte mit DoUntilLoop löschen RRS feed

  • Frage

  • Frage an die Experten

    Ich nutze EXCEL2007 und möchte mit VBA über eine Schleife überflüssige Zellinhalte löschen.

    Ausgangssituation:

    In der Spalte "C"  sind einige Zeilen leer, durch eine Prozedur werden in die Spalten F bis I Werte eingetragen, die ich klöschen möchte.

    Eine DoUntil Loop Schleife soll die leeren Zellen in Spalte "C" ermitteln und die Inhalte in der Spalten "F:I" löschen.

    Ich habe dazu eine Prozedur geschrieben. Im Ergebnis läuft die Schleife bis zur ersten Leerzelle der Spalte "C", löscht die zugehörige Range "F:I" und dann erfolgen keine weiteren Löschungen.

    Was kann man hier tun?

    Danke für die Antworten

    Sub Signale_Löschen_überfüssiger_Inhalte()
    Dim j As Integer

     j = 1

    Do Until j = 500 - 1      ' Schleife, läuft maximal bis Endwert
           If Range("C2").Offset(j, 0).Value = "" Then
         Range("F2:I2").Offset(j, 0).Select
         Selection.ClearContents
    Exit Do
           End If
           j = j + 1
        Loop

    Range("A1").Select
    End Sub


    Donnerstag, 16. August 2012 06:43

Antworten

  • Da ist doch immer noch das Exit Do drin, jetzt nur so, dass bereits im ersten Schleifendurchlauf aufgerufen wird. Nimm es einfach ganz raus.

    Olaf Helper
    Blog Xing

    • Als Antwort markiert Alfi,Gebesee Donnerstag, 16. August 2012 14:29
    Donnerstag, 16. August 2012 11:39

Alle Antworten

  • Do Until j = 500 - 1      ' Schleife, läuft maximal bis Endwert
           If Range("C2").Offset(j, 0).Value = "" Then
         Range("F2:I2").Offset(j, 0).Select
         Selection.ClearContents
         Exit Do
           End If
           j = j + 1
        Loop

    Beim ersten Fund rufst Du "Exit Do" auf, wodurch die Do Until Schleife verlassen wird; also kein Wunder, das zur eine Zeile geleert wird.

    Oder habe ich Deine Frage missverstanden?


    Olaf Helper
    Blog Xing

    Donnerstag, 16. August 2012 06:55
  • Olaf dks für den Hinweis, Habe den Zähler umgestellt. Nach der If-Schleife gesetzt. Ergebnis wie zuvor.

    Do Until j = 500 - 1      ' Schleife, läuft maximal bis Endwert
           If Range("C2").Offset(j, 0).Value = "" Then
         Range("F2:I2").Offset(j, 0).Select
         Selection.ClearContents
        End If
           j = j + 1

    Exit Do
           
        Loop

    Donnerstag, 16. August 2012 09:05
  • Da ist doch immer noch das Exit Do drin, jetzt nur so, dass bereits im ersten Schleifendurchlauf aufgerufen wird. Nimm es einfach ganz raus.

    Olaf Helper
    Blog Xing

    • Als Antwort markiert Alfi,Gebesee Donnerstag, 16. August 2012 14:29
    Donnerstag, 16. August 2012 11:39
  • Hallo Olaf,
    es hat funktioniert,
    Ich hatte hier zwei geschachtelte Anweisungen gesehen.

    Dks
    Alfi

    Donnerstag, 16. August 2012 14:29