[Risolto] Macro per modifica filtro automatico
Inviato: 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.
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