von Stephan » Di, 25.04.2006 14:17
dass hier der fehler liegt war mir klar.
Naja, OK. Aber mal zur Verdeutlichung das Du nicht glaubst es hinge an Do-Loop, es geht mit For-Next genauso gut:
Code: Alles auswählen
Sub SuWertLoescheZeile1
Dim oDoc, oSheet as Object
Dim str1 as String
Dim i as Integer
oDoc = ThisComponent
oSheet = oDoc.CurrentController.getActiveSheet
str1 = "wurst"
j = 9
for i = 0 to j
If oSheet.getCellByPosition(0, i).String = str1 then
oSheet.Rows.removeByIndex(i,1)
j = j - 1
i = i - 1
End If
next i
end Sub
Der Wert des Schleifenzählers ist innerhalb der Schleife grundsätzlich ganz irrelevant soweit es dessen Steuerfunktion bezüglich der Schleife betrifft, erst wenn die Next-Zeile kommt wird der Wert der Variablen um die gegebene Schrittweite (hier 1 da nicht spezifiziert) erhöht, dann zum For gegangen und dort geschaut ob die Variable noch innerhalb des Bereichs liegt, wenn ja der Inhalt der Schleife abgearbeitet, sonst nach der Schleife fortgesetzt.
Heißt also beispielsweise das im Folgenden das Makro nie beendet wird, weil i nach dem For immer 0 ist und vor dem Next -1.
Gruß
Stephan
[quote]dass hier der fehler liegt war mir klar.[/quote]
Naja, OK. Aber mal zur Verdeutlichung das Du nicht glaubst es hinge an Do-Loop, es geht mit For-Next genauso gut:
[code]Sub SuWertLoescheZeile1
Dim oDoc, oSheet as Object
Dim str1 as String
Dim i as Integer
oDoc = ThisComponent
oSheet = oDoc.CurrentController.getActiveSheet
str1 = "wurst"
j = 9
for i = 0 to j
If oSheet.getCellByPosition(0, i).String = str1 then
oSheet.Rows.removeByIndex(i,1)
j = j - 1
i = i - 1
End If
next i
end Sub[/code]
Der Wert des Schleifenzählers ist innerhalb der Schleife grundsätzlich ganz irrelevant soweit es dessen Steuerfunktion bezüglich der Schleife betrifft, erst wenn die Next-Zeile kommt wird der Wert der Variablen um die gegebene Schrittweite (hier 1 da nicht spezifiziert) erhöht, dann zum For gegangen und dort geschaut ob die Variable noch innerhalb des Bereichs liegt, wenn ja der Inhalt der Schleife abgearbeitet, sonst nach der Schleife fortgesetzt.
Heißt also beispielsweise das im Folgenden das Makro nie beendet wird, weil i nach dem For immer 0 ist und vor dem Next -1.
[code]Sub Test()
For i = 0 To 1
i = i - 1
Next i
End Sub[/code]
Gruß
Stephan