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.
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
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.
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.
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.
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.
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