Problem mit Schleife "Do Loop"

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 97
nach unten

Betrifft: Problem mit Schleife "Do Loop"
von: MikeS
Geschrieben am: 29.04.2002 - 09:56:37

Hallo Leute,

mit nachfolgendem Makro prüfe ich bis zur ersten leere Zelle in Spalte 1 , ob in Spalte 1 (beginnend ab A7) in den Zellen eine Formel oder der Text "s.oben" steht.

Private Sub CommandButton1_Click()

Dim i As Integer
On Error Resume Next
i = 7

Do Until IsEmpty(Cells(i, 1).Value)
If Cells(i, 1).HasFormula Then
Range(Cells(i, 2), Cells(i, 6)).ClearContents
ElseIf (Cells(i, 1).Value = "s.oben") Then
Rows(i).Select
Selection.EntireRow.Delete
i = i - 1
End If
i = i + 1
Loop
End Sub

Steht eine Formel drin, werden in der betreffenden Zeile die Spalte 2 bis6 gelöscht = Range(Cells(i, 2), Cells(i, 6)).ClearContents .

Steht der Text "s.oben" drin, soll die gesamte Zeile gelöscht werden (wie mit "Strg" + "-").

Wenn ich das Makro starte, kann ich nur mit "Strg" + "Esc" aus der Schleife "aussteigen".

Was mache ich falsch???

Vielen Dank
MikeS


nach oben   nach unten

Re: Problem mit Schleife "Do Loop"
von: Coach
Geschrieben am: 29.04.2002 - 10:59:18

Hallo Mike, ohne .value funzt es: Do Until IsEmpty(Cells(i, 1)) Gruß Coach

nach oben   nach unten

Funzt leider nicht!!!!!!!!!
von: MikeS
Geschrieben am: 29.04.2002 - 11:58:57

Hallo Coach, danke für Deinen Tip. Leider komme ich wieder nur mit "Esc" aus der Schleife raus. Wenn ich das Makro also mit "Esc" unterbreche und in die Tabelle wechsle, ist die zu löschende Spalte (A(i)= "s.oben") markiert. Vielleicht noch `ne Idee??? Das ist nun der aktuelle Code: Private Sub CommandButton1_Click() Dim i As Integer On Error Resume Next i = 7 Do Until IsEmpty(Cells(i, 1)) If Cells(i, 1).HasFormula Then Range(Cells(i, 2), Cells(i, 6)).ClearContents ElseIf (Cells(i, 1).Value = "s.oben") Then Rows(i).Select Selection.EntireRow.Delete i = i - 1 End If i = i + 1 Loop End Sub Danke MikeS

nach oben   nach unten

Re: Funzt leider nicht!!!!!!!!!
von: Coach
Geschrieben am: 29.04.2002 - 13:18:47

Hallo Mike, verstehe ich nicht: "zu löschende Spalte". Hast Du eventuell noch irgendwelche Events in Deiner Tabelle/Datei , die auf diese Änderungen reagieren?. Versuch den Code mal in einer ansonsten "nackten" Mappe, also nur mit den Daten und diesem Code. Gruß Coach

nach oben   nach unten

Re: Problem mit Schleife "Do Loop"
von: Martin Beck
Geschrieben am: 29.04.2002 - 13:56:52

Hallo Mike, beim ersten Eintreffen von "s.oben" ist die ElseIf-Bedingung erfüllt und Du rechnest i=i-1 Vor dem Loop rechnest Du dann i=i+1 Daraus folgt, daß i unverandert bleibt, denn die zweite "Formel" entspricht i=i-1+1. Und wenn i unverändert bleibt, hängst Du in einer Endlosschleife. Laß das i=i-1 weg, dann müßte es gehen. Gruß Martin Beck

nach oben   nach unten

Re: Problem mit Schleife "Do Loop"
von: Coach
Geschrieben am: 29.04.2002 - 14:24:59

Hallo Martin, das mit dem i = i-1 ist schon okay, da wenn die Zeile i gelöscht wird die bisherige Zeile i+1 ja dann i ist und i=i-1 und i=i+1 wieder i ist. Gruß Coach

nach oben   nach unten

Sorry, lag am Blattschutz! Jetzt funzt es!!!
von: MikeS
Geschrieben am: 29.04.2002 - 14:38:31

Hi Coach, so klappts!!! Private Sub CommandButton1_Click() Application.ScreenUpdating = False ActiveSheet.Unprotect Password:="bulls23" Dim i As Integer On Error Resume Next i = 7 Do Until IsEmpty(Cells(i, 1)) If Cells(i, 1).HasFormula Then Range(Cells(i, 2), Cells(i, 6)).ClearContents Else Rows(i).Select Selection.EntireRow.Delete i = i - 1 End If i = i + 1 Loop Cells(3, 3).Activate Application.ScreenUpdating = True ActiveSheet.Protect End Sub Danke für Deine Hilfe.

nach oben   nach unten

Sorry, übersehen
von: Martin Beck
Geschrieben am: 29.04.2002 - 14:43:40

Hallo Coach, Du hast natürlich recht, das hatte ich übersehen (und nicht getestet). Die letzte Variante des Makros läuft bei mir einwandfrei, ich kann den Fehler nicht reproduzieren. Vielleicht sollte Mike mal den Tabellenaufbau für den Bereich um die Zelle herum posten, in der das Makro hängen bleibt. Gruß Martin Beck

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Problem mit Schleife "Do Loop""