Pannello di Controllo Moderatore ]

[Risolto] Macro per modifica filtro automatico

Discussioni sull'applicazione per i fogli di calcolo

[Risolto] Macro per modifica filtro automatico

Messaggioda chris1971 » mercoledì 1 maggio 2019, 12:05

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   Espandi visualeStringi visuale
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 7 volte
Ultima modifica di chris1971 il mercoledì 1 maggio 2019, 23:05, modificato 1 volta in totale.
OpenOffice 4.0.1 e Windows 10
chris1971
 
Messaggi: 10
Iscritto il: domenica 3 febbraio 2019, 13:40

Re: Macro per modifica filtro automatico

Messaggioda hubert lambert » mercoledì 1 maggio 2019, 12:58

Ciao Chris,

Ecco una version che la fa:
Codice: Seleziona tutto   Espandi visualeStringi visuale
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   Espandi visualeStringi visuale
    oRange = oSheet.getCellRangeByPosition(0,3,9,1500)

2. il filtro va applicato al "range", non al foglio:
Codice: Seleziona tutto   Espandi visualeStringi visuale
    oRange.filter(oFilterDesc)

Cordiali saluti.
Allegati
filtro_chris1971.ods
(23.58 KiB) Scaricato 13 volte
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 149
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Macro per modifica filtro automatico

Messaggioda chris1971 » mercoledì 1 maggio 2019, 13:21

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
chris1971
 
Messaggi: 10
Iscritto il: domenica 3 febbraio 2019, 13:40

Re: Macro per modifica filtro automatico

Messaggioda hubert lambert » mercoledì 1 maggio 2019, 18:14

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
hubert lambert
Volontario
Volontario
 
Messaggi: 149
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Macro per modifica filtro automatico

Messaggioda chris1971 » mercoledì 1 maggio 2019, 23:05

Hai ragione.
Grazie ancora tantissimo.
OpenOffice 4.0.1 e Windows 10
chris1971
 
Messaggi: 10
Iscritto il: domenica 3 febbraio 2019, 13:40


Torna a Calc

Chi c’è in linea

Visitano il forum: Alexis e 16 ospiti