Crea filtro avanzato

    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:

    Questa pagina fornisce una procedura macro di LibreOffice Basic che crea un filtro avanzato. È un esempio tratto dal Capitolo 13 ("Calc come database") della Guida 7.0 Calc.

    Descrizione

    L'applicazione di un filtro avanzato con una macro funziona in modo simile all'impostazione di un filtro standard. La differenza fondamentale è che l'intervallo di celle contenente i criteri di filtro viene utilizzato per creare il descrittore di filtro. La procedura macro di seguito mostra come eseguire questa operazione utilizzando il metodo createFilterDescriptorByObject. Utilizzate un foglio di valutazione della classe nelle celle $Foglio1.A1:H11 come intervallo di dati e celle $Foglio2.A1:H3 come intervallo di criteri. Il foglio di calcolo collegato contiene un tale intervallo di dati e un intervallo di criteri.

    Codice

    Sub AdvancedRangeFilter()
      Dim oSheet     'Un foglio dal documento Calc.
      Dim oRanges    'La proprietà NamedRanges.
      Dim oCritRange 'Intervallo che contiene i criteri di filtro.
      Dim oDataRange 'Intervallo che contiene i dati da filtrare.
      Dim oFiltDesc  'Descrizione del filtro
    
      REM Intervallo che contiene i criteri di filtro
      oSheet = ThisComponent.getSheets().getByIndex(1)
      oCritRange = oSheet.getCellRangeByName("A1:H3")
    
      REM È inoltre possibile ottenere l'intervallo contenente il 
      REM criterio di filtro da un intervallo denominato.
      REM oRanges = ThisComponent.NamedRanges
      REM oRange = oRanges.getByName("AverageLess80")
      REM oCritRange = oRange.getReferredCells()
    
      REM I dati che volete filtrare
      oSheet = ThisComponent.getSheets().getByIndex(0)
      oDataRange = oSheet.getCellRangeByName("A1:H11")
    
      oFiltDesc = oCritRange.createFilterDescriptorByObject(oDataRange)
      oDataRange.filter(oFiltDesc)
    End Sub

    Questo Calcolo foglio di calcolo contiene il codice soprastante Basic di LibreOffice.