Copia i risultati del filtro avanzato in una posizione diversa

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


    Other languages:

    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.

    Note pin.svg

    Nota:
    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

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

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