Domanda.

nome=ignazio
cognome=calò
versione=2003
conosco3=buono
vba=SI
macro=SI
email=c.ignazio@email.it
chra=447
problema=salve ennius, ci siamo già sentiti altre volte e mi sei sempre stato di grande aiuto, (appena finisco questo lavoro te lo mando) ma stavolta ti voglio dare io un link:
http://www.microsoft.com/italy/office/previous/2000/esperti/
c'è un articolo su come filtrare i dati in excel tramite vba...e funziona...ho letto il tuo articolo e la tua soluzione
ingegnosissima a questo problema ed ho creduto che questo articolo potesse interessarti.

ps credo che neanche nel file della microsoft funzioni il filtro
sulla data...è possibile?

ciao
ignazio

 

Risposta.

salve Ignazio, ti ringrazio per la segnalazione, e comunque, non per fare critiche, ma il file scaricato contiene alcune mancanze, che un programmatore deve tenere presente: per esempio, se non scrivi niente nelle inputbox, o premi Annulla, si incorre in errori di run-time perchè la routine continua, e le variabili campo e criterio, essendo vuote, generano
l'errore quando vengono usate dalle istruzioni.
io in genere aggiungo, esempio con Campo:
If Campo = "" then Exit Sub
cioè faccio interrompere il proseguimento dell'esecuzione delle altre istruzioni.
Altro errore è usare il metodo ShowAllData per ripristinare il database per intero: infatti se premi ancora una volta il pulsante, generi un'altro errore di run-time perchè il Data è già tutto aperto.
io uso richiamare il filtro con Autofilter, che funziona come un interruttore. un click attiva il filtro il secondo click lo toglie e
ripristina automaticamente tutta l'area dati.
Per quanto riguarda il filtro sulla data, è normale se non funziona; l'ho spiegato in vari articoli che con le inputbox è necessario poi definire il tipo di dati, in questo caso essendo una data, con CDate. Ti invio la routine con la modifica, sostituiscila a quella sul file Filtri_Automatici, e vedrai che il filtro sulle date funziona:

Sub Ricerca()
'
' Ricerca Macro
' Macro registrata il 28/03/2001 da ....
'
' Scelta rapida da tastiera: CTRL+MAIUSC+R
'
    Dim Campo
    Dim Criterio

    Campo = InputBox("Inserire il numero del campo di ricerca")
    Criterio = InputBox("Inserire il criterio di ricerca")

If IsDate(Criterio) Then
    Criterio = CDate(Criterio)
End If

    Range("D12").Select

    Selection.AutoFilter
    Selection.AutoFilter Field:=Campo, Criteria1:=Criterio

    Range("D12").Select

End Sub

Non tutte le cose che trovi sul sito Microsoft sono necessariamente perfette, anche perchè a volte sono fatte non da esperti della Microsoft, ma da collaboratori esterni, e comunque tutti, me compreso ovviamente, possono sbagliare.
saluti, ennius