einen komplexen Filter erstellen
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Spende
Zusammenfassung
Diese Seite zeigt ein LibreOffice Basic Makro, das einen komplexen Filter erzeugt. Es ist ein Beispiel aus Kapitel 13 ("Calc als Datenbank") aus dem Handbuch zu Calc 7.0.
Beschreibung
Einen komplexer Filter in einem Makro funktioniert ähnlich einem Standardfilter. Der Hauptunterschied liegt darin, dass der Zellbereich mit den Filterkriterien für die Filterbeschreibung verwendet wird. Das folgende Makro zeigt, wie dies mithilfe der Methode createFilterDescriptorByObject funktioniert. Es verwendet ein Notenblatt in den Zellen $Tabelle1.A1:H11 als Datenbereich und den Zellen $Tabelle2.A1:H3 als Kriterienbereich. Das verlinkte Tabellenblatt enthält solch einen Datenbereich und einen Kriterienbereich.
Code
Sub AdvancedRangeFilter()
Dim oSheet 'Ein Tabellenblatt aus der Calc Mappe.
Dim oRanges 'Die Eigenschaft NamedRanges
Dim oCritRange 'Bereich mit den Filterkriterien
Dim oDataRange 'Bereich mit den zu filternden Daten
Dim oFiltDesc 'Filterbeschreibung
REM Bereich mit den Filterkriterien
oSheet = ThisComponent.getSheets().getByIndex(1)
oCritRange = oSheet.getCellRangeByName("A1:H3")
REM Man kann auch den Bereich mit den
REM Filterkriterien aus dem benannten Bereich nehmen.
REM oRanges = ThisComponent.NamedRanges
REM oRange = oRanges.getByName("AverageLess80")
REM oCritRange = oRange.getReferredCells()
REM die zu filternden Daten
oSheet = ThisComponent.getSheets().getByIndex(0)
oDataRange = oSheet.getCellRangeByName("A1:H11")
oFiltDesc = oCritRange.createFilterDescriptorByObject(oDataRange)
oDataRange.filter(oFiltDesc)
End Sub
Dieses Calc Tabellenblatt enthält den obigen LibreOffice Basic Code.