[gelöst] Zellen innerhalb einer CellRange indizieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

[gelöst] Zellen innerhalb einer CellRange indizieren

Beitrag von TrueColor »

Hallo,

ich habe mehrere gleich aufgebaute CellRanges.

Range_1 --> A1:A8
Range_2 --> B1:B8
[...]
Range_5 --> E1:E8

Kann ich (wenn ja, wie?) die Zellen innerhalb der CellRange irgendwie indizieren, so, dass ich die Zellen z.B. mit Schleifen einfacher bearbeiten kann?

Danke!
TrueColor
Zuletzt geändert von TrueColor am Fr, 05.07.2013 10:53, insgesamt 1-mal geändert.
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Zellen innerhalb einer CellRange indizieren

Beitrag von bst »

Hi,

versuche das mal so.

cu, Bernd
--

Code: Alles auswählen

Sub Main
   oSheet = ThisComponent.currentController.ActiveSheet
   For i = 0 To 7
      For j = 0 To 4
         oSheet.GetCellByPosition(j,i).String = "Z" & i+1 & " S" & j+1
      Next
   Next
End Sub
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Zellen innerhalb einer CellRange indizieren

Beitrag von TrueColor »

Hallo Bernd,

manchmal sieht man den Wald vor lauter Bäumen nicht... ich war total auf meine CellRanges fixiert.

Danke dir!

Grüße
Robert
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
F3K Total
********
Beiträge: 3706
Registriert: Mo, 28.02.2011 17:49

Re: [gelöst] Zellen innerhalb einer CellRange indizieren

Beitrag von F3K Total »

Hi,
eine Anmerkung:
Es gibt auch im CellRange ein

Code: Alles auswählen

.getcellbyposition
wobei die oberste linke Zelle die Indizes (0,0) hat.
Das Makro

Code: Alles auswählen

Sub Main
    oSheet = ThisComponent.sheets.getbyname("Tabelle1")
    oRange = oSheet.getcellrangebyname ("B12:C24")
    oCell = oRange.getcellbyposition(0,0)
    msgbox oCell.AbsoluteName
End Sub
gibt.z.B:
RC1.png
RC1.png (5.91 KiB) 2397 mal betrachtet
Somit kannst Du hiermit jeglichen Zellbereich durchlaufen:

Code: Alles auswählen

Sub Main2
    oSheet = Thiscomponent.sheets.getbyname("Tabelle1")
    oRange = oSheet.getcellrangebyname ("B12:C24")
    for i = 0 to ubound(orange.data)
        for k = 0 to ubound (orange.data(0))
            oCell = oRange.getcellbyposition(k,i)
            msgbox oCell.AbsoluteName
        next k
    next i
End Sub
Gruß R
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: [gelöst] Zellen innerhalb einer CellRange indizieren

Beitrag von TrueColor »

Hallo F3K Total,

das sieht genau nach dem aus, an das ich gedacht hatte.

Eine Frage zum Verständnis: Warum hast du die orange.data (ich hätte ja lieber blaue Daten gehabt *SCNR*) in der k-Schleife indiziert, in der i-Schleife hingegen nicht? Ist die Indizierung bei nur einem Element nicht zwingend notwendig?

Grüße
Robert
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
F3K Total
********
Beiträge: 3706
Registriert: Mo, 28.02.2011 17:49

Re: [gelöst] Zellen innerhalb einer CellRange indizieren

Beitrag von F3K Total »

Nun,
oBlue wäre wohl weniger verständlich als oRange (oooo Rändsch).
Da war ich wohl 2F4U.
Darum, AFAIK und FYI:
Mit

Code: Alles auswählen

oRange.data
liest du das Daten-Array des Zellbereichs aus.
Mit

Code: Alles auswählen

uBound(oRange.data)
wiederum den Y-Wert, sprich die Anzahl der Zeilen
Mit

Code: Alles auswählen

uBound(oRange.data(0))
den X-Wert, sprich die Anzahl der Werte in der Zeile mit dem Index 0, also die Anzahl der Spalten.
GL R
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: [gelöst] Zellen innerhalb einer CellRange indizieren

Beitrag von TrueColor »

Also werden grundsätzlich immer zuerst die Zeilen ausgelesen, ohne das man das irgendwie explizit angeben muss?

Grüße
Robert
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
F3K Total
********
Beiträge: 3706
Registriert: Mo, 28.02.2011 17:49

Re: [gelöst] Zellen innerhalb einer CellRange indizieren

Beitrag von F3K Total »

AFAIK, yes!
R
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: [gelöst] Zellen innerhalb einer CellRange indizieren

Beitrag von TrueColor »

Danke!

Gruß
Robert
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
Antworten