Filtro automatico Dato non trovato
Hai un problema con Excel? 
Filtro automatico- Dato non trovato
di Fabio (utente non iscritto) data: 31/10/2014 21:44:23
Buonasera, per delle ricerche, utilizzo il codice che riporto.
Funziona benissimo, ma se il dato non viene trovato vengono nascoste tutte le righe.
Vorrei che mi desse un messaggio tipo "Dato non trovato" e che le righe restino tutte visibili.
Pensavo di risolverlo inserendo prima una ricerca, e solo se trova il dato mi applica il filtro.
Qualcuno può suggerirmi un codice?
Grazie e a tutti.
Sub P_Filtra_TARGA()
myNum = InputBox
If myNum = "" Then Exit Sub
TARGA = ("*" & myNum & "*")
Selection.AutoFilter Field:=18, Criteria1:=TARGA, Operator:=xlAnd
ActiveWindow.ScrollRow = 4
End Sub |
di Zer0Kelvin data: 31/10/2014 22:19:58
Ciao.
Puoi usare il metodo Find per controllare che esista almeno un'occorrenza della stringa cercata
Sub P_Filtra_TARGA()
Dim myNum As String, Targa As String, Fnd As Range
myNum = InputBox("Inserire la targa")
If myNum <> "" Then
Set Fnd = Selection.Columns(18).Find(myNum, , xlValues, xlPart)
If Not Fnd Is Nothing Then
Targa = ("*" & myNum & "*")
Selection.AutoFilter Field:=18, Criteria1:=Targa, Operator:=xlAnd
Set Fnd = Nothing
Else
MsgBox "Targa non trovata: " & myNum, vbExclamation
End If
End If
ActiveWindow.ScrollRow = 4
End Sub |
di Fabio (utente non iscritto) data: 31/10/2014 22:32:52
grazie Zer0Kelvin,
per la ricerca completa della targa (es: DS860GF) è perfetto.
E' possibile utilizzare il metodo Find anche per una ricerca parziale (es: DS) ?
Ho provato ad utilizzare gli * ma non funziona.
ciao
di Zer0Kelvin data: 31/10/2014 23:00:04
Veramente avevo già impostato Find per effettuare una ricerca parziale ( xlPart ),può darsi che, da Excel, tu abbia impostato la ricerca in modo che faccia distinzione fra maiuscole e minuscole.
Prova a modificare l'istruzione così
Set Fnd = Selection.Columns(18).Find(myNum, , xlValues, xlPart, , , False, False) |
di Zer0Kelvin data: 31/10/2014 23:03:25
Scusa, mi era sfuggito che tu hai scritto "gli *"; con find, non devi aggiungere nulla alla stringa da cercare.
Se vuoi trovare le parole che contengono "gli", devi cercare proprio "gli"; Find troverà automaticamente le corrispondenze parziali come "foglia", "cagliari" e simili.
di Fabio (utente non iscritto) data: 31/10/2014 23:34:00
scusa, ma mi sono accorto che il Find non trova la targa (ne completa ne parziale), sia con il primo codice che hai inserito, sia con la riga modificata.
Ho controllato anche il carattere Maiuscolo/minuscolo
Ho creato un file di prova che allego
grazie
di lepat (utente non iscritto) data: 01/11/2014 11:24:19
elimina selection
Set Fnd = Columns(18).Find(myNum, , xlValues, xlPart)
di Fabio (utente non iscritto) data: 01/11/2014 11:36:51
Perfetto
Grazie a tutti
Vuoi Approfondire?