Werte mit Do Loop löschen



Excel-Version: 97
nach unten

Betrifft: Werte mit Do Loop löschen
von: Mark
Geschrieben am: 25.04.2002 - 12:45:53

Guten Tag,

mit nachfolgender Schleife soll in Spalte A (ab A12 abwärts bis Zellinhalt = "") geprüft werden, ob in der Zelle eine Formel steht oder ein Datum.

Steht eine Formel drin, sollen die Zellinhalte der 4 rechts daneben liegenden Zellen gelöscht werden (Formel in Spalte A soll bleiben).

Steht ein Datum drin, soll die gesamte Zeile gelöscht werden (wie "Strg" + "-" , nach markieren der Zeile wird diese aus der Tabelle entfernt und die nachfolgenden Zellen nach oben geschoben).

In meiner nachfolgenden Schleife funktioniert das erst, wenn ich das Makro zweimal durchlaufen lasse???

Sub FormularLöschen()
Dim i As Integer
On Error Resume Next
i = 12

Do Until IsEmpty(Cells(i, 1).Value)
If Cells(i, 1).HasFormula Then
Range(Cells(i, 2), Cells(i, 5)).Clear
ElseIf IsDate(Cells(i, 1)) Then
Rows(i).Select
Selection.EntireRow.Delete
End If

i = i + 1
Loop
End Sub

Danke Mark


nach oben   nach unten

Re: Werte mit Do Loop löschen
von: sattler
Geschrieben am: 25.04.2002 - 13:16:45

Hallo! Dadurch das du eine Zeile löscht verschiebt sich der Bezug deiner Werte um 1 nach oben. Wenn du dann mit i=i+1 weiter machst überspringst du 1 Zeile.Da beim 2. Durchgang des Programms keine Zeilen mehr gelöscht werden, funktionierts dann erst richtig. Hoffe ich hab das Problem getroffen. Gruß Sattler Lösungsvorschlag: Sub FormularLöschen() Dim i As Integer On Error Resume Next i = 1 Do Until IsEmpty(Cells(i, 1).Value) If Cells(i, 1).HasFormula Then Range(Cells(i, 2), Cells(i, 5)).Clear ElseIf IsDate(Cells(i, 1)) Then Rows(i).Select Selection.EntireRow.Delete i = i - 1 End If i = i + 1 Loop End Sub

nach oben   nach unten

Perfekt
von: Mark
Geschrieben am: 25.04.2002 - 15:39:53

Dankeschön, das war`s!!!

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Word-Dokumente via VBA ausdrucken"