|
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
|