[Gelöst] Zellbereich verbundener Zellen ermitteln

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

Moderator: Moderatoren

Benutzeravatar
womolbo
**
Beiträge: 26
Registriert: So, 12.04.2020 12:43

[Gelöst] Zellbereich verbundener Zellen ermitteln

Beitrag von womolbo »

Hallo,
kann mir jemand einen Hinweis geben, wie ich in Calc die Adresse des gerade markierten verbundenen Zellbereichs ermittle?
Letztlich brauche ich die Anzahl Zeilen und Spalten anklickbarer verbundener Bereiche.
Trotz Xray und zwei Stunden Suche habe ich selber leider keine direkte/elegante Lösung gefunden.
Vielen Dank und Gruß
Zuletzt geändert von womolbo am Fr, 22.05.2020 15:58, insgesamt 1-mal geändert.
LibreOffice Portable 6.3.5.2 (x86), Windows 7
Benutzeravatar
womolbo
**
Beiträge: 26
Registriert: So, 12.04.2020 12:43

Re: Zellbereich verbundener Zellen ermitteln

Beitrag von womolbo »

@Stephan:
Vielen Dank für die enorm schnelle Hilfe.

Ich habe mir den Link/Code/Text gerade angesehen und nehme an, dass du mich mißverstanden hast.
Es geht nicht um Mehrfachauswahlen, sondern um verbundene Zellen.

Nehmen wir als Beispiel den Zellbereich A1 bis C4 und verbinden diese 4 Zeilen und 3 Spalten zu einer
einzelnen Fläche, die sich im Hintergrund über 12 Zellen erstreckt.
Wenn ein Anwender auf diese Fläche klickt und sie dann als ganzes markiert angezeigt wird, so liefert
getCurrentSelection() nur eine Referenz auf die erste Zelle dieses verbundenen Bereichs [hier also A1].
Entsprechend liefert getCurrentSelection().supportsService("com.sun.star.sheet.SheetCell") true,
da ja nur optisch mehre Zellen markiert scheinen. Man sieht ja auch im Adreßfeld, dass nur A1 als
selektiert betrachtet wird. Und auch .StartRow und Co. liefern nur die Daten einer einzigen Zelle
[also A1,der ersten Zelle].

Für mich stellt sich die Frage wie und ob man von der 'einen' markierten Zelle die Adresse des verbundenen
Zellbereichs zu dem die Zelle gehört kommt um die Anzahl der Zeilen und Spalten zu ermitteln.

Gruß.Vjeko.
LibreOffice Portable 6.3.5.2 (x86), Windows 7
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Zellbereich verbundener Zellen ermitteln

Beitrag von mikeleb »

Hallo,
mittels eines Cursors kommst du an den verbundenen Bereich:

Code: Alles auswählen

	oDoc=ThisComponent
	oSel=oDoc.CurrentSelection
	oTab=oSel.Spreadsheet
	oCur=oTab.createCursorByRange(oSel)
	oCur.collapseToMergedArea()
Gruß,
mikeleb
Benutzeravatar
womolbo
**
Beiträge: 26
Registriert: So, 12.04.2020 12:43

Re: Zellbereich verbundener Zellen ermitteln

Beitrag von womolbo »

That's it. Vielen, vielen Dank.
LibreOffice Portable 6.3.5.2 (x86), Windows 7
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zellbereich verbundener Zellen ermitteln

Beitrag von Stephan »

mikeleb hat geschrieben: Mi, 13.05.2020 20:32 Hallo,
mittels eines Cursors kommst du an den verbundenen Bereich:

Code: Alles auswählen

	oDoc=ThisComponent
	oSel=oDoc.CurrentSelection
	oTab=oSel.Spreadsheet
	oCur=oTab.createCursorByRange(oSel)
	oCur.collapseToMergedArea()
Das ist ein interessanter Code-Schnipsel(*), vor allem auch weil mir bei dem Thema verbundene Zellen deutlich wird das ich diesen Fall noch nie in Makros berücksichtigt habe, welche in Calc Zell-Selektionen analysieren, denn immer prüfe ich nur nach Cell, CellRange und CellRanges.

(*)
und natürlich auch eine interessante Lösung, die (zumindest) ich bisher garnicht kannte



Gruß
Stephan
Antworten