Es gibt zwei Wege. Über die Position im Arbeitsblatt oder die Position innerhalb des
Ranges.
Erstmal die Position innerhalb des Arbeitsblattes.
Ein Zellrange besteht aus mehren Zellen in Zeilen und vielleicht Spalten.
Diese lassen sich natürlich auch gezielt ansprechen und auch mit Hilfe von zwei Schleifen
einzeln
nacheinander anspechen.
Eine Range hat unter der Rangeadresse die Eckpunkte des Ranges. Diese fragt man ab
und lässt
dann darüber eine verchachtelte For-Schleife laufen.
oCalc = thisComponent
oSheet = oCalc.sheets(0)
oCellRange = osheet.getCellRangeByName("A1:B5")
'auslesen der Eckpunkte
iErsteSpalte = oCellRange.rangeAddress.startColumn
iErsteZeile = oCellRange.rangeAddress.startRow
iLetzteSpalte = oCellRange.rangeAddress.EndColumn
iLetzteZeile = oCellRange.rangeAddress.EndRow
'Schleife über die Zeilen im Sheet
For i = iErsteZeile to iLetzteZeile
For m = iErsteSpalte to iLetzteSpalte
oCell=osheet.getCellByPosition(m,i)
oCell.String=i
next m
next i
Oder
'Schleife über die Zeilen im Range
For i = 0 to iLetzteZeile-iErsteZeile
For m = 0 to iLetzteSpalte-iErsteSpalte
oCell=oCellRange.getCellByPosition(m,i)
oCell.String=i
next m
next i
In dem Beispiel ist die Range fest angegeben. Dann kann man natürlich die Schleife
direkt über die
Werte laufen lassen.
Ideal ist die Lösung wenn man auf ein Markierung durch den Anwender reagieren will.
oCellRange = osheet.getCurrentSelection()
Dann muß aber vorher geprüft werden ob es bei der Selektion eine Zelle, ein Bereich
oder mehrere
Bereiche sind.
Der zweite Weg geht direkt über die Position innerhalb des Ranges.
Dann erfolgt der Zugriff über Methode getCellByPosition die auch innerhalb eines Ranges
zur
Verfügung steht. Hier bei gehts es aber nur die relative Position.
oCalc = thisComponent
oSheet = oCalc.sheets(0)
oCellRange = osheet.getCellRangeByName("A1:B5")
oCell = oCellRange.getCellByPosition(0,0)
Mit 0,0 erreicht man die erste Zelle, mit 0,1 die erste Zelle in der zweite Spalten
usw..
Aufpassen muß man hiebei das eine falsche Zeilen oder Spaltenangabe, die außerhalb
des
gewählten Ranges liegen, kommt es zu einer Fehlermeldung.