Seite 1 von 1

[Gelöst] Zellbereich verbundener Zellen ermitteln

Verfasst: Mi, 13.05.2020 08:28
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ß

Re: Zellbereich verbundener Zellen ermitteln

Verfasst: Mi, 13.05.2020 08:46
von Stephan
siehe "Sub mehrfachSelektion" auf Seite 24 in:
http://www.calc-info.de/files/Calc_StarBasic.pdf


Gruß
Stephan

Re: Zellbereich verbundener Zellen ermitteln

Verfasst: Mi, 13.05.2020 19:16
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.

Re: Zellbereich verbundener Zellen ermitteln

Verfasst: Mi, 13.05.2020 20:32
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()

Re: Zellbereich verbundener Zellen ermitteln

Verfasst: Mi, 13.05.2020 21:04
von womolbo
That's it. Vielen, vielen Dank.

Re: Zellbereich verbundener Zellen ermitteln

Verfasst: Do, 14.05.2020 10:41
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