[GELÖST] Bestimmung der Eckpunkte bei Mehrfachselektion

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

Moderator: Moderatoren

Ralf R
*
Beiträge: 16
Registriert: Di, 20.10.2020 17:13

[GELÖST] Bestimmung der Eckpunkte bei Mehrfachselektion

Beitrag von Ralf R »

Hallo zusammen!

Wenn ich einen selektierten Zellbereich habe, kann ich mit

Code: Alles auswählen

ThisComponent.currentController.select( oCellRange )
oCellRange = ThisComponent.getCurrentSelection()
 
S1 = oCellRange.rangeAddress.startColumn
Z1 = oCellRange.rangeAddress.startRow
SL = oCellRange.rangeAddress.EndColumn
ZL = oCellRange.rangeAddress.EndRow
die Eckpunkte auslesen.

Bei mehreren Selektionen funktioniert diese Methode nicht.

Gibt es eine Möglichkeit die Eckpunkte für den Bereich, in dem sich die Selektionen befinden, auszulesen?

Beste Grüße,
Ralf
Zuletzt geändert von Ralf R am Mi, 12.07.2023 16:28, insgesamt 1-mal geändert.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bestimmung der Eckpunkte bei Mehrfachselektion

Beitrag von mikeleb »

Hallo,
direkt auslesen kannst du es nicht, aber du kannst alle Teilbereiche durchlaufen und die minimalen/maximalen Werte bestimmen.
Gruß,
mikeleb
Ralf R
*
Beiträge: 16
Registriert: Di, 20.10.2020 17:13

Re: Bestimmung der Eckpunkte bei Mehrfachselektion

Beitrag von Ralf R »

Hallo mikeleb!

Danke für die Marschroute, aber den Weg finde ich noch nicht.
Ich versuche es mit einer Schleife:

Code: Alles auswählen

For n = 0 To  selektion.getCount() - 1 'UBound(selektion)

ThisComponent.currentController.select( oCellRange )
oCellRange = ThisComponent.getCurrentSelection()'.getRangeAddress
 
S1 = oCellRange.rangeAddress.startColumn
Z1 = oCellRange.rangeAddress.startRow
SL = oCellRange.rangeAddress.EndColumn
ZL = oCellRange.rangeAddress.EndRow

Next n
Aber mit "rangeAdress" geht es anscheinend nicht, und eine andere Methode fällt mir nicht ein.

Beste Grüße,
Ralf
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bestimmung der Eckpunkte bei Mehrfachselektion

Beitrag von mikeleb »

Hallo,
probier mal folgendes:

Code: Alles auswählen

Sub Main

	oSel=ThisComponent.getCurrentSelection()
	'Ist ein einfacher Zellbereich gewählt oder ist es eine Mehrfachselection?
	If oSel.supportsservice("com.sun.star.sheet.SheetCellRanges") then
		'Mehrfachselection
		aAdressen=oSel.getRangeAddresses
		i=0
		zeile_min=aAdressen(i).StartRow
		zeile_max=aAdressen(i).EndRow
		spalte_min=aAdressen(i).StartColumn
		spalte_max=aAdressen(i).EndColumn
		
		do while i<ubound(aAdressen)
			i=i+1
			if zeile_min>aAdressen(i).StartRow then zeile_min=aAdressen(i).StartRow
			if zeile_max<aAdressen(i).EndRow then zeile_max=aAdressen(i).EndRow
			if spalte_min>aAdressen(i).StartColumn then spalte_min=aAdressen(i).StartColumn
			if spalte_max<aAdressen(i).EndColumn then spalte_max=aAdressen(i).EndColumn
		loop
	Else
		'einfacher Bereich
		zeile_min=oSel.getRangeAddress.StartRow
		zeile_max=oSel.getRangeAddress.EndRow
		spalte_min=oSel.getRangeAddress.StartColumn
		spalte_max=oSel.getRangeAddress.EndColumn
	end if
	
	msgbox 	zeile_min & chr(10) & zeile_max & chr(10) & spalte_min & chr(10) & spalte_max

End Sub
Gruß,
mikeleb
Ralf R
*
Beiträge: 16
Registriert: Di, 20.10.2020 17:13

Re: Bestimmung der Eckpunkte bei Mehrfachselektion

Beitrag von Ralf R »

Hallo mikeleb,

das war ein Treffer ins Schwarze - und zwar genau in die Mitte!

Vielen, lieben Dank!
Ralf
Antworten