Jump to content

einen komplexen Filter erstellen

From The Document Foundation Wiki
This page is a translated version of the page Macros/Calc/ba029 and the translation is 100% complete.


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.