Copia i risultati del filtro avanzato in una posizione diversa

From The Document Foundation Wiki
< Macros‎ | Calc
Jump to navigation Jump to search
This page is a translated version of the page Macros/Calc/ba030 and the translation is 100% complete.
Other languages:
English • ‎italiano

Questa pagina fornisce un frammento di codice macro di LibreOffice Basic che copia i risultati del filtro avanzato in una posizione diversa. È un esempio tratto dal Capitolo 13 ("Calc come database") della Guida 7.0 Calc.

Descrizione

I risultati di un filtro avanzato possono essere estratti in una posizione diversa utilizzando la proprietà OutputPosition. Copiare i risultati in questo modo elimina la necessità per Calc di nascondere le righe che non corrispondono ai criteri di ricerca, cosa che normalmente farebbe se si filtrassero sul posto.

Il frammento di codice macro riportato di seguito mostra come copiare i risultati del filtro in una posizione diversa. Si noti che il descrittore del filtro deve essere modificato prima di applicare queste impostazioni di filtro.

Per dimostrare il funzionamento di questo frammento, prendete il codice per la procedura macro AdvancedRangeFilter sul Crea filtro avanzato e inserite il codice indicato di seguito, appena prima che venga chiamato il metodo filtro. Il foglio di calcolo collegato contiene la versione modificata della procedura macro AdvancedRangeFilter e utilizza un foglio di valutazione della classe nelle celle $Foglio1.A1:H11 come intervallo di dati e celle $Foglio2.A1:H3 come intervallo di criteri. I risultati filtrati vengono inseriti nelle celle $Foglio1.B13:I19.

Im-jabber.svg

Note:
La proprietà OutputPosition restituisce una copia di una struttura. Di conseguenza, non è possibile impostare valori singoli, come la riga o la colonna, direttamente tramite questa proprietà. Ad esempio, l'impostazione di oFilterDesc.OutputPosition.Row su 2 non funzionerà, poiché è la proprietà Row sulla copia, non l'originale, che cambia.

Codice

 1  REM Copia i dati di output anziché filtrarli sul posto.
 2  oFiltDesc.CopyOutputData = True
 3
 4  REM Create un CellAddress e impostatelo per Foglio1
 5  REM Colonna B, riga 13 (ricorda, inizia a contare con 0)
 6  Dim outputCell As New com.sun.star.table.CellAddress
 7  outputCell.Sheet = 0
 8  outputCell.Column = 1
 9  outputCell.Row = 12
10  oFiltDesc.OutputPosition = outputCell

Questo Foglio di calcolo Calc contiene il codice soprastante Basic di LibreOffice.