Seite 1 von 1

loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 16:25
von kannenklaus
hallo zusammen,

ich versuche gerade eine do-loop-schleife zu basteln, die solange durch die zellen der spalte 1 läuft bis diese leer sind. der folg. code klappt nicht, weil er darüberhinaus sucht. freue mich auf eine konstruktive antwort.

Code: Alles auswählen

Sub test
Dim start as Double
Dim oDok as Object
Dim oShQuelle as Object
Dim oShZiel as Object
Dim oCell as Object
'Dim BOID as Double
oDok=ThisComponent
oShQuelle=oDok.sheets.getByName("Tab_Stopot_2")
start=0
 oCell=oShQuelle.getCellByPosition(0,start)
		
	    Do while not IsEmpty(oCell)
	   oCell=oShQuelle.getCellByPosition(0,start)
	        msgbox oCell.formula

	        msgbox (start,0,"Wert von Start")
	        start = start + 1

	    Loop


end Sub
freundliche grüße
klaus

Re: loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 16:35
von Frieder D.
Hallo kannenklaus

Mit IsEmpty(oCell) überprüft man, ob eine Variable den Wert "Empty" (=Variable wurde noch nie ein Wert,ein String,oder ein Object zugewiesen.) hat.
Das ist aber bei dir nicht der Fall, da die Variable oCell ein Object hält.
Statt dessen müsstest du schauen, ob die Zelle einen String enthält.

Code: Alles auswählen

Do while oCell.String <> ""
Gruß Frieder

Re: loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 16:43
von Karolus
Hallo

Code: Alles auswählen

     Do
          oCell=oShQuelle.getCellByPosition(0,start)
          msgbox oCell.formula
          msgbox (start,0,"Wert von Start")
          start = start + 1
     Loop until ocell.string = ""

Re: loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 16:49
von kannenklaus
hallo frieder,

danke für deine schnelle meldung. bei deinem vorschlag kommt es wie bei mir dazu, dass auch leere zellen angesteuert werden. eigentlich will ich das genau verhindern.

viele grüße
klaus

Re: loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 16:58
von Frieder D.
Hallo
kannenklaus hat geschrieben:hallo frieder,
danke für deine schnelle meldung. bei deinem vorschlag kommt es wie bei mir dazu, dass auch leere zellen angesteuert werden. eigentlich will ich das genau verhindern.
Da die ursprüngliche Schleife Kopfgesteuert war, läuft sie natürlich bis einschließlich der ersten leeren Zelle.
Allerdings war deine Schleife eine Endlosschleife, da die Bedingung nie erreicht werden konnte.(Absturz vorprogrammiert.)

Mit der Schwanz gesteuerten Schleife von Karolus kannst du das natürlich vermeiden.


Gruß Frieder

Re: loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 17:02
von kannenklaus
hallo frieder und karolus,

danke für euren tipps. nun klappt es.

viele grüße
klaus

Re: loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 17:09
von Frieder D.
Hallo klaus,

Es Währe interessant zu wissen, für was du deine Schleife brauchst.
Da Schleifen über Zellen in OO oder LO sehr zeitaufwendig sind,
sollte man versuchen sie wo möglich zu umgehen.
Für die meisten Zwecke gibt es elegantere Lösungen.
Und wo schleifen absolut nicht zu vermeiden sind,
kann mann die Geschwindigkeit meistens um ein vielfaches Steigern,
indem man den Inhalt der Zellen in ein Array einließt (mit getdataArray() ),
und dann eine Schleife über das Array macht.

Gruß Frieder

Re: loop-schleife durch zellen

Verfasst: Fr, 24.02.2012 19:17
von Stephan
Mit der Schwanz gesteuerten Schleife ...
Na ob das stimmt ... ich glaub das Gegenteil von kopfgesteuerter Schleife ist eher eine fußgesteuerte Schleife ... selbst wenn das Gegenteil eines kopfgesteuerten Mannes manchmal ein ... gesteuerter Mann sein mag :wink:


Gruß
Stephan