Hallo,
ich versuche für eine Zellrange herauszufinden, ob Sie in einer Gruppierung liegt, da ich falls diese existiert ich Sie entfernen möchte. (OOo graut das Gruppierung entfernen ICON auch aus, wenn die Zelle in Keiner Gruppe liegt.)
Wenn ich nicht vorhandene Gruppierungen entferne hat das anscheinend den nebenefekt, das plötzlich alle Gruppierungen des Tabellendokuments verschwinden.
Grüße
Christoph
ist Zelle Teil einer Gruppierung?
Moderator: Moderatoren
-
- **
- Beiträge: 49
- Registriert: Mo, 15.05.2006 16:07
- Kontaktdaten:
Re: ist Zelle Teil einer Gruppierung?
Hallo,
konntest du eine Lösung für das Problem finden?
Mich interessiert auch wie ich per Makro heraus finde ob die gewählte Zelle bzw. Zellen ein Zellenverbund sind UND bei welcher Zelle dieser endet.
An den Anfang der verbundenen Zellen komme ich mit: ThisComponent.CurrentSelection.RangeAddress
Danke für eure Tipps!
konntest du eine Lösung für das Problem finden?
Mich interessiert auch wie ich per Makro heraus finde ob die gewählte Zelle bzw. Zellen ein Zellenverbund sind UND bei welcher Zelle dieser endet.
An den Anfang der verbundenen Zellen komme ich mit: ThisComponent.CurrentSelection.RangeAddress
Danke für eure Tipps!
Re: ist Zelle Teil einer Gruppierung?
Hallo datensurfer,
Also, zunächst prüfst du, ob die "CurrentSelection" den Service css.sheet.SheetCellRanges unterstützt - dann handelt es sich um eine Mehrfachselektion nicht zusammenhängender Bereiche. Hier kannst du mit der Methode getRangeAddresses() einen Array aller Zellbereichsadressen auslesen - und dann einzeln behandeln.
Ist es kein SheetCellRanges, dann prüfst du, ob die "CurrentSelection" den Service css.sheet.SheetCell unterstützt - dann handelt es sich um eine einzelne Zelle. Hier bekommst du die Adresse (das Adressobjekt ) mit der Methode getCellAddress()
Ist es auch kein SheetCell, dann ist es ein einfacher, zusammenhängender Zellbereich. Hier erhälst du das Adressobjekt mit getRangeAddress().
Hast du das Adressobjekt, kannst du Spalte und Zeile (jeweils als Index) auslesen:
startColumn, startRow, endColumn, endRow.
Frage beantwortet?
Gruss
Thomas
Das kann man so nicht sagen! Die "CurrentSelection" kann nämlich diverse Zustände annehmen: Eine einzelne Zelle, einen einfachen, zusammenhängenden Zellbereich oder mehrere, nicht zusammenhängende Zellbereiche. Je nachdem, was es ist, musst du anders reagieren!datensurfer hat geschrieben:ThisComponent.CurrentSelection.RangeAddress
Also, zunächst prüfst du, ob die "CurrentSelection" den Service css.sheet.SheetCellRanges unterstützt - dann handelt es sich um eine Mehrfachselektion nicht zusammenhängender Bereiche. Hier kannst du mit der Methode getRangeAddresses() einen Array aller Zellbereichsadressen auslesen - und dann einzeln behandeln.
Ist es kein SheetCellRanges, dann prüfst du, ob die "CurrentSelection" den Service css.sheet.SheetCell unterstützt - dann handelt es sich um eine einzelne Zelle. Hier bekommst du die Adresse (das Adressobjekt ) mit der Methode getCellAddress()
Ist es auch kein SheetCell, dann ist es ein einfacher, zusammenhängender Zellbereich. Hier erhälst du das Adressobjekt mit getRangeAddress().
Hast du das Adressobjekt, kannst du Spalte und Zeile (jeweils als Index) auslesen:
startColumn, startRow, endColumn, endRow.
Frage beantwortet?
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- **
- Beiträge: 49
- Registriert: Mo, 15.05.2006 16:07
- Kontaktdaten:
Re: ist Zelle Teil einer Gruppierung?
Ja und nein bzw. klingt logisch und ähnliche Wege bin ich schon gegangen allerdings bekomme ich NUR die Daten der Start-Zelle des "Zellenverbundes".Toxitom hat geschrieben: Frage beantwortet?
Start- & End-Row sind identisch OBWOHL der Verbund über 6 Rows geht.

Was mir aktuell fehlt ist an sich die Möglichkeit heraus zu finden welche Zelle das Ende des Zellenverbundes ist, den Rest habe ich so gelöst:
Code: Alles auswählen
currentSelection = ThisComponent.getCurrentSelection
if currentSelection.supportsService("com.sun.star.sheet.SheetCell") then
'Der Cursor ist einer Zelle
' MsgBox "Eine Zelle markiert"
elseif currentSelection.supportsService("com.sun.star.sheet.SheetCellRange") then
' Ein Bereich
MsgBox "Ein Bereich wurde markiert, bitte eine Zelle auswählen!"
elseif currentSelection.supportsService("com.sun.star.sheet.SheetCellRanges") then
'Mehrere Bereiche
MsgBox "Mehrere Bereiche wurden markiert, bitte eine Zelle auswählen!"
end if
oTargetRange = currentSelection.getCellAddress
oTargetRange.Column = 0
oController = ThisComponent
oSheet1 = oController.Sheets.getByIndex(0)
oSheet2 = oController.Sheets.getByIndex(1)
if currentSelection.getIsMerged() then
MsgBox "Verbund"
else
MsgBox "zelle"
end if
Ein Versuch war mit
Code: Alles auswählen
xCursor = oSheet1.createCursorByRange(currentSelection)
xBereich = currentSelection.getRangeAddress()

Weitere Ideen?