Crea filtro avanzato
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Riepilogo
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.