Seite 1 von 1

Filterkriterien per Makro setzen II

Verfasst: Mi, 16.09.2020 12:04
von Lupo121205
Hi, mit dem folgenden code aktiviere ich einen vorher festgelegten Spezialfilter

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:DataFilterSpecialFilter", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:FilterExecute", "", 0, Array())
Ich muß nur noch [return] oder [ok] drücken und der Filter wird aktiviert.
filter2.jpg
filter2.jpg (64.31 KiB) 2520 mal betrachtet
Damit kann ich zwar gut leben, möchte aber zur Abrundung auch diesen letzten manuellen Schritt automatisch erfolgen lassen.

Weiß jemand, was an meinem Code noch fehlt?
Gruss und herzlichen Dank für den bisherigen Beistand
Lupo

Re: Filterkriterien per Makro setzen II

Verfasst: Mi, 16.09.2020 12:48
von Hiker
Hallo,

ich nutze folgenden Code der aufgerufen wird, wenn sich die Zelle ändert, in der das Filterkriterium steht.

Die Tabelle Filterquelle enthält die zu filternden Daten - wo ich sonst auf Bereich-aktualisieren im Menü gehen würde,
das musst Du dann anpassen.
Die letzten beiden Zeilen springen dann nur an die Stelle, wo ich weiterarbeiten will,
kannst Du löschen oder anpassen.

Code: Alles auswählen

sub Refresh_Filter_Ranges
REM Quelle F3KTotal / LibreOffice-Forum / 30.12.17 / Abrechnung mit Datumskriterium erstellen
REM Angepasst /JB
    oController = thisComponent.CurrentController
    oStartCell = thisComponent.Sheets.getbyName("Filterquelle").getCellByPosition(1,1)
    oController.Select(oStartCell)
    document   = oController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(document, ".uno:DataAreaRefresh", "", 0, Array())
    
    oStartCell = thisComponent.Sheets.getbyName("Auswertung").getCellByPosition(1,1)
    oController.Select(oStartCell)
end sub
Mfg, Jörn

PS: Erster Teil der Geschichte ist hier:
https://de.openoffice.info/viewtopic.php?f=18&t=74946

[gelöst] Re: Filterkriterien per Makro setzen II

Verfasst: Do, 24.09.2020 20:26
von Lupo121205
Hallo Jörn,
möchte doch noch ein positives feedback zu Deinem Code machen.
Hat mir keine Ruhe gelassen - und nachdem ich den Code so halbwegs begriffen haben, ist er als letztes I-Tüpfelchen in meine Anwendung eingeflossen und hat sich dort bewährt. Der Unterschied bestand im wesentlichen in der Zeile

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:DataAreaRefresh", "", 0, Array())

Re: Filterkriterien per Makro setzen II

Verfasst: Do, 24.09.2020 22:51
von Hiker
Hallo,

schön dass Du es verwenden könntest. Ich hab das damals nur kurz in der Mittagspause rüberkopiert.

Der Unterschied im Ansatz ist, das Du ursprünglich den Filter neu setzen willst, während der von mir genannte Code nur "Bereich aktualisieren" aufruft, was ausreicht um den Filter zu aktualisieren, wenn man den Cursor in den Quellbereich gesetzt hat - dasselbe, was ich ja auch schon als manuelles Verfahren beschrieben hatte.

Mfg, Jörn