[Risolto] Macro per modifica filtro automatico

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
chris1971
Messaggi: 10
Iscritto il: domenica 3 febbraio 2019, 12:40

[Risolto] Macro per modifica filtro automatico

Messaggio da chris1971 »

Salve, ho un problema con la modifica di un filtro automatico.
Il problema è che il filtro non è posizionato sulla prima riga del foglio ma sulla n.4 e quando applico il filtro con la macro, funziona ma mi cancella le prime righe.

Ho provato ad utilizzare i comandi CopyOutputData e OutputPosition per cambiare la posizione del risultato, ma c'è qualcosa che sbaglio nel listato.

Per comodità inserisco il codice ed un esempio.
Prima di premere il pulsante utilizzate il filtro automatico e cambiate le spese selezionando "CASA" ed il filtro funziona.
Vorrei fare lo stesso con la macro associata ad un pulsante, ma non funziona e dopo che è stata avviata il filtro automatico elimina le intestazioni.

Grazie anticipatamente a chi vorrà aiutarmi.

Codice: Seleziona tutto

sub filtro ()

Dim oSheet ' Sheet to filter.
Dim oRange ' Range to be filtered.
Dim oFilterDesc as object' Filter descriptor.
dim oCelDest as object
Dim oFields(0) As New com.sun.star.sheet.TableFilterField
oSheet = ThisComponent.Sheets.getByName("SPESE")
oRange = oSheet.getCellRangeByPosition(0,4,9,1500)
'oSheet.setDataArea( oRange )
oFilterDesc = oRange.createFilterDescriptor(true)

oSheet.filter(oFilterDesc)'NEW

With oFields(0)
 .Field = 1
 .IsNumeric = False ' Use a string, not a number.
 .StringValue = "CASA" 
 .Operator = com.sun.star.sheet.FilterOperator.EQUAL			
End With

oCelDest = oSheet.getCellRangeByName("A5")

With oFilterDesc
 .ContainsHeader = TRUE
 .CopyOutputData = TRUE
 .OutputPosition = oCelDest.CellAddress
 .UseRegularExpressions = TRUE
 .setFilterFields(oFields())
End With

oSheet.filter(oFilterDesc)

End Sub

Allegati
FILTRO.ods
(25.55 KiB) Scaricato 84 volte
Ultima modifica di chris1971 il mercoledì 1 maggio 2019, 23:05, modificato 1 volta in totale.
OpenOffice 4.0.1 e Windows 10
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Macro per modifica filtro automatico

Messaggio da hubert lambert »

Ciao Chris,

Ecco una version che la fa:

Codice: Seleziona tutto

Sub filtro()
    Dim oFields(0) As New com.sun.star.sheet.TableFilterField
    oSheet = ThisComponent.Sheets.getByName("SPESE")
    oRange = oSheet.getCellRangeByPosition(0,3,9,1500)
    oFilterDesc = oRange.createFilterDescriptor(true)
    With oFields(0)
         .Field = 1
         .IsNumeric = False ' Use a string, not a number.
         .StringValue = "CASA" 
         .Operator = com.sun.star.sheet.FilterOperator.EQUAL            
    End With
    With oFilterDesc
         .ContainsHeader = TRUE
    '     .UseRegularExpressions = TRUE
         .setFilterFields(oFields())
    End With
    oRange.filter(oFilterDesc)
End Sub
Le due correzioni:
1. il "range" deve contenere la riga di intestazione:

Codice: Seleziona tutto

    oRange = oSheet.getCellRangeByPosition(0,3,9,1500)
2. il filtro va applicato al "range", non al foglio:

Codice: Seleziona tutto

    oRange.filter(oFilterDesc)
Cordiali saluti.
Allegati
filtro_chris1971.ods
(23.58 KiB) Scaricato 97 volte
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
chris1971
Messaggi: 10
Iscritto il: domenica 3 febbraio 2019, 12:40

Re: Macro per modifica filtro automatico

Messaggio da chris1971 »

Grazie mille, funziona perfettamente.

Purtroppo però forse ho sbagliato il quesito, nel senso che in questo modo non è esattamente come modificare il filtro automatico ed in questo modo cambia i dati della celle perdendo il filtro automatico.

C'è un modo per modificare via macro il filtro automatico come se stessimo lavorando senza macro e non perdere la relativa formattazione.
In questo modo potrei quindi usare sia la macro che la freccia con le opzioni automatiche.

Grazie
OpenOffice 4.0.1 e Windows 10
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Macro per modifica filtro automatico

Messaggio da hubert lambert »

Puoi provare il file allegato, che da me funziona senza perdere nulla del filtro automatico o della formattazione ? Anche la freccia del filtro automatico diventa blu dopo l'esecuzione della macro.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
chris1971
Messaggi: 10
Iscritto il: domenica 3 febbraio 2019, 12:40

Re: Macro per modifica filtro automatico

Messaggio da chris1971 »

Hai ragione.
Grazie ancora tantissimo.
OpenOffice 4.0.1 e Windows 10
Rispondi