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.