Seite 1 von 2

[gelöst] Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Mi 5. Jul 2017, 07:18
von bma
Guten Morgen!

Ich will in Calc per Makro Zeilen gruppieren (F12-Taste), die Gruppierung schließen und ggfs. per Makro alle Gruppierunen wieder aufheben.

Ein aufgezeichnetes Makro bringt mir hier mit ".uno:Group" bzw. ".uno:Ungroup" schon die wichtigen Befehle, ich schaffe es aber nicht, diese in mein Makro zu übernehmen.

Leider finde ich zu dem Thema kein passendes Beispiel im Internet und wäre daher für eine kleine Hilfestellung dankbar.

Gruß
Bernhard

Re: Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Do 6. Jul 2017, 12:36
von F3K Total
Jo,
das geht zum Beispiel so:

Code: Alles auswählen

Sub Gruppierungen_setzen
    oSheet = thisComponent.sheets.getbyName("Tabelle1")
    for i = 0 to 10
        nStart = i*10 + 1
        nEnd = nStart + 6
        oRangeaddress = oSheet.GetCellRangeByPosition(0,nStart,0,nEnd).RangeAddress
        'com.sun.star.table.TableOrientation.COLUMNS
        'com.sun.star.table.TableOrientation.ROWS
        oSheet.group(oRangeaddress,com.sun.star.table.TableOrientation.ROWS)
        oSheet.HideDetail(oRangeaddress)
    next i
End Sub

Sub Gruppierungen_aufheben
    oSheet = thisComponent.sheets.getbyName("Tabelle1")
    for i = 0 to 10
        nStart = i*10 + 1
        nEnd = nStart + 6
        oRangeaddress = oSheet.GetCellRangeByPosition(0,nStart,0,nEnd).RangeAddress
        oSheet.ShowDetail(oRangeaddress)
        oSheet.ungroup(oRangeaddress,com.sun.star.table.TableOrientation.ROWS)
    next i
End Sub
Beispiel anbei
Gruß R

Re: Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Do 6. Jul 2017, 12:57
von bma
Perfekt! Vielen Dank!
Bernhard

Re: Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Mi 14. Feb 2024, 13:31
von Tschubi
F3K Total hat geschrieben:
Do 6. Jul 2017, 12:36
Jo,
das geht zum Beispiel so:

Code: Alles auswählen

Sub Gruppierungen_setzen
    oSheet = thisComponent.sheets.getbyName("Tabelle1")
    for i = 0 to 10
        nStart = i*10 + 1
        nEnd = nStart + 6
        oRangeaddress = oSheet.GetCellRangeByPosition(0,nStart,0,nEnd).RangeAddress
        'com.sun.star.table.TableOrientation.COLUMNS
        'com.sun.star.table.TableOrientation.ROWS
        oSheet.group(oRangeaddress,com.sun.star.table.TableOrientation.ROWS)
        oSheet.HideDetail(oRangeaddress)
    next i
End Sub

Sub Gruppierungen_aufheben
    oSheet = thisComponent.sheets.getbyName("Tabelle1")
    for i = 0 to 10
        nStart = i*10 + 1
        nEnd = nStart + 6
        oRangeaddress = oSheet.GetCellRangeByPosition(0,nStart,0,nEnd).RangeAddress
        oSheet.ShowDetail(oRangeaddress)
        oSheet.ungroup(oRangeaddress,com.sun.star.table.TableOrientation.ROWS)
    next i
End Sub
Beispiel anbei
Gruß R
Hallo F3K Total,

ich suche eine Möglichkeit bereits vorhandene Gruppierungen / Gliederungen in einem definierten Bereich mittels Makro aufzuklappen und wieder zuzuklappen. Habe es auch bereits hier gepostet, aber scheint schwierig zu sein, denn bisher habe ich keine Rückmeldung erhalten.

viewtopic.php?f=12&t=39470

Dein Makro hier im Post hingegen erstellt und entfernt Gruppierungen / Gliederungen. Hast du vielleicht einen Lösungsansatz, Vorschlag für meine Problemstellung?

Vielen Dank und Grüße

Re: [gelöst] Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Mi 14. Feb 2024, 16:47
von F3K Total
Moin,
alle Gruppierungen im benutzen Bereich ein/ausblenden:

Code: Alles auswählen

sub Gruppierungen_einblenden
    oSheet = ThisComponent.Sheets.getbyName("Tabelle1")
    oCursor = oSheet.createCursor
    oCursor.gotoStart
    oCursor.GotoEndofUsedArea(true)
    oRangeaddress = oCursor.RangeAddress
    oSheet.ShowDetail(oRangeaddress)
end sub

sub Gruppierungen_ausblenden
    oSheet = ThisComponent.Sheets.getbyName("Tabelle1")
    oCursor = oSheet.createCursor
    oCursor.gotoStart
    oCursor.GotoEndofUsedArea(true)
    oRangeaddress = oCursor.RangeAddress
    oSheet.HideDetail(oRangeaddress)
end sub
Und wenn du dieses Makro an einen Button bindest, der folgenden Titel hat: Gruppierungen auf Tabelle 1 ausblenden
erzeugst du eine Umschalter:

Code: Alles auswählen

sub Gruppierungen_ausblenden_Einblenden(oEvent)
    oButton = oEvent.Source.model
    oSheet = ThisComponent.Sheets.getbyName("Tabelle1")
    oCursor = oSheet.createCursor
    oCursor.gotoStart
    oCursor.GotoEndofUsedArea(true)
    oRangeaddress = oCursor.RangeAddress
    if oButton.label = "Gruppierungen auf Tabelle 1 ausblenden" then
        oButton.label = "Gruppierungen auf Tabelle 1 einblenden"
        oSheet.HideDetail(oRangeaddress)
    else 
        oButton.label = "Gruppierungen auf Tabelle 1 ausblenden" 
        oSheet.ShowDetail(oRangeaddress)
    endif
end sub
Beispieldatei anbei.
Gruß R

Re: [gelöst] Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Mi 14. Feb 2024, 18:52
von Tschubi
Hallo F3k Total,

danke schon mal für deine schnelle Hilfe.

Ich würde das gern auf einen Begrenzten Zeilen-Bereich anwenden wollen, denn nur diese Gruppierungen und nicht alle sollen ein- und wieder ausgeblendet werden.

Im Idealfall würde ich das gern über einen ToggleButton ein- und wieder ausblenden wollen und die Beschriftung und Farbe des Button entsprechend anpassen. Aber das funktioniert so irgendwie nicht.

Problemstellung zus. ist noch das der ToggleButton in Tabelle2 ist und die Gruppierungen in Tabelle1 im Bereich A200:A500.

Code: Alles auswählen

Sub ToggleGruppenDepots()
    Dim sheet As Object
    Dim groups As Object
    Dim button As Object

    sheet = ThisComponent.Sheets.getByName("Tabelle1")
    groups = sheet.Rows
    button = sheet.DrawPage.Forms.getByName("ToggleButton")

    If Not button Is Nothing Then
        ' Ändere die Beschriftung und Farbe des Buttons im Wechsel
        If button.Label = "Gruppen öffnen" Then
            button.Label = "Gruppen schließen"
            button.BackgroundColor = RGB(255, 0, 0) ' Ändere die Farbe nach Bedarf
            Gruppierungen_einblenden  'F3K Total Makro
        Else
            button.Label = "Gruppen öffnen"
            button.BackgroundColor = RGB(0, 255, 0) ' Ändere die Farbe nach Bedarf
            Gruppierungen_ausblenden  'F3K Total Makro
        End If
    End If
End Sub
Kannst du mir auch hier weiterhelfen?

Danke!

Re: [gelöst] Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Do 15. Feb 2024, 06:50
von F3K Total
Bitteschön

Re: [gelöst] Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Do 15. Feb 2024, 07:10
von Tschubi
Hallo F3k Total,

sieht schon echt super aus, vielen Dank.

Ich würde das gerne aber noch nur auf einen definierten Zeilenbereich einschränken wollen und damit eben nur gezielt dort die Aktion ausführen wollen und alle anderen Gruppierungen in Tabelle 1 unberührt lassen.

Vielen Dank und Gruß

Re: [gelöst] Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Do 15. Feb 2024, 11:26
von F3K Total
Wenn du dir das Makro mal ansehen würdest, müsstest du feststellen, dass es genau so ist:
AAA.png
AAA.png (26.04 KiB) 3429 mal betrachtet
Nun sollte es mal reichen, bissel Eigeninitiative könntest du auch an den Tag legen.
R

Re: [gelöst] Calc: Zeilen gruppieren und Gruppierung aufheben

Verfasst: Do 15. Feb 2024, 14:03
von Tschubi
Hallo F3K Total,

hm, vermutlich hatte ich die alte Datei geöffnet, sorry.

Vielen Dank für deine Mühe und Geduld!