Tutte le operazioni di filtro operate all'interfaccia utente possono
essere effettuate da macro. Ma attenzione non osserverai l'apertura
del menù sa tendina. Quello che otterrai è l'equivalente dell'effetto
di una macro ottenuta con la registrazione di una macro..
Prova a registrane una interagendo con l'interfaccia utente ( aperura
dei vari menù e click ); quando riesegui la macro, ti si produrrà
l'effetto dei filtri ma non osservi l'apertura di un menù. Per
ottenere l'apertura di un menù perchè l'utente comntinui poi
manulmanet l'operazione sono necessarie delle API di Windows. Nel tuo
caso se vuoi un amacro che ti permetta un'interazione dinamica devi
ricorrere o ad una inputbox o ad un Form in cui inserire la stringa di
ricerca.
Per es per dei dati in D1:D7 ( in D1 l'etichetta di colonna ) la
registrazione di macro per un valori contenebti una a contiene il
codice:
Sub Macro1()
Selection.AutoFilter
ActiveSheet.Range("$D$1:$D$7").AutoFilter Field:=1,
Criteria1:="=*a*", _
Operator:=xlAnd
End Sub
La macro definitiva ( da immettere nel modulo del foglio dove deve
agire) ed ovviamnete da adattare alle tue esigenze potrebbe essere:
Sub Macro2()'
Dim strCriteria As String
strCriteria = InputBox("Inserisci stringa di ricerca")
If Len(Trim(strCriteria)) > 0 Then
strCriteria = "*" & strCriteria & "*" 'criterio contiene
Else
Range("$D$1:$D$7").AutoFilter Field:=1
Exit Sub
End If
Range("$D$1:$D$7").AutoFilter Field:=1 ' toglie il criterio se c'è
Range("$D$1:$D$7").AutoFilter Field:=1, Criteria1:=strCriteria, _
Operator:=xlAnd
End Sub
Come puoi vedere l'effetto finale è quello dell'interfaccia utente ma
non ti è concesso di simulare l'apertura dei menù.
Puoi comunque assegnando una scorciatoia di tastiera avviere la macro
senza usare il mouse.
Ciao Elio