von Stephan » Di, 01.07.2014 09:11
Irgendwie scheint es bei If/then nen Konflikt zu geben aber ganz sicher bin ich mir nicht.
Naja, ich habe es jetzt nicht ausprobiert aber das Problem hängt doch typischerweise sicher damit zu tun das sich der Index der Zeilen ändert wenn Du Zeilen löscht, d.h. wenn Du mittendrin zwei Zeilen löscht wird in Folge z.B. aus Zeile 100 Zeile 98 und der Zähler i übersprint zwei zu bearbeitenden Zeilen.
Auch darf die ursprüngliche Wertzuweisung für i nicht in der Schleife stehen.
Also im Prinzip müsste es so lauten (nicht geprüft):
Code: Alles auswählen
raus = 10
i = 1
Do
tmp = oSheet.getCellByPosition(3,i).FormulaLocal
if tmp = "x" Then
for j = 0 to 1
oRows.removeByIndex(j,i)
Next j
raus = 10
i = i - 1
Else
raus = raus - 1
i = i + 1
End If
Loop While raus > 0
Auch bin ich nicht sicher ob Du wirklich tun willst was:
sagt, denn das löscht ja immmer die 2 ersten Zeilen, auch reichte dafür:
ich denke aber es soll doch das hier passieren:
was dasselbe wäre wie:
Gruß
Stephan
[quote]Irgendwie scheint es bei If/then nen Konflikt zu geben aber ganz sicher bin ich mir nicht.[/quote]
Naja, ich habe es jetzt nicht ausprobiert aber das Problem hängt doch typischerweise sicher damit zu tun das sich der Index der Zeilen ändert wenn Du Zeilen löscht, d.h. wenn Du mittendrin zwei Zeilen löscht wird in Folge z.B. aus Zeile 100 Zeile 98 und der Zähler i übersprint zwei zu bearbeitenden Zeilen.
Auch darf die ursprüngliche Wertzuweisung für i nicht in der Schleife stehen.
Also im Prinzip müsste es so lauten (nicht geprüft):
[code]raus = 10
i = 1
Do
tmp = oSheet.getCellByPosition(3,i).FormulaLocal
if tmp = "x" Then
for j = 0 to 1
oRows.removeByIndex(j,i)
Next j
raus = 10
i = i - 1
Else
raus = raus - 1
i = i + 1
End If
Loop While raus > 0
[/code]
Auch bin ich nicht sicher ob Du wirklich tun willst was:
[code]for j = 0 to 1
oRows.removeByIndex(j,i)
Next j
[/code]
sagt, denn das löscht ja immmer die 2 ersten Zeilen, auch reichte dafür:
[code]oRows.removeByIndex(0,2) [/code]
ich denke aber es soll doch das hier passieren:
[code]oRows.removeByIndex(i,2)[/code]
was dasselbe wäre wie:
[code]for j = 0 to 1
oRows.removeByIndex(i,1)
Next j
[/code]
Gruß
Stephan