einen komplexen Filter erstellen

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


    Other languages:

    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.