Excel Forum Per condividere esperienze su Microsoft Excel

Filtro automatico tramite imputBox

  • Messaggi
  • OFFLINE
    De Martin.PAOLO
    Post: 55
    Registrato il: 08/07/2017
    Città: SUSEGANA
    Età: 62
    Utente Junior
    2003
    00 22/11/2022 12:58
    Ciao a Tutti, ho questa macro per filtro automatico tramite imputBox.
    Funziona bene anche cosi, ma vorrei che se non trova nessun numero mi restituisse il messaggio “Numero non trovato”. Ho provato in vari modi ha modificarla ma le mie scarse conoscenze…


    Sub Cerca_tramite_filtro_automatico()

    Dim Cerco As String
    Dim Crit1 As String

    Cerco = InputBox("Cerca Numero")
    If Cerco = "" Then Exit Sub
    Crit1 = "" & Cerco & ""

    Range("D1").AutoFilter Field:=1, Criteria1:=Crit1, Operator:=xlAnd

    Foglio1.ShowAllData
    End If

    End Sub
  • OFFLINE
    Marius44
    Post: 1.037
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Veteran
    Excel2019
    00 22/11/2022 18:22
    Ciao
    Modifica la tua macro così
    Option Explicit
    
    Sub Cerca_tramite_filtro_automatico()
    
    Dim Cerco As String
    Dim Crit1 As String
    
    Cerco = InputBox("Cerca Numero")
    If Cerco = "" Then Exit Sub
    Crit1 = "" & Cerco & ""
    Range("D1").AutoFilter Field:=1, Criteria1:=Crit1, Operator:=xlAnd
    
    If Cells(Rows.Count, 4).End(xlUp).Row = 1 Then MsgBox "Numero non trovato", vbInformation, "Avviso"
    
    Foglio1.ShowAllData
    
    End Sub
    
    

    Fai sapere. Ciao,
    Mario
  • OFFLINE
    De Martin.PAOLO
    Post: 55
    Registrato il: 08/07/2017
    Città: SUSEGANA
    Età: 62
    Utente Junior
    2003
    00 23/11/2022 06:57
    Ciao Mario, mancava End If che ho aggiunto per il resto va perfettamente [SM=g27811] .
    Saluti e grazie Mille!
  • OFFLINE
    De Martin.PAOLO
    Post: 56
    Registrato il: 08/07/2017
    Città: SUSEGANA
    Età: 62
    Utente Junior
    2003
    00 23/11/2022 16:45
    Ciao Mario, ti chiedo il significato di questa espressione nel caso dovessi adoperarlo in altre posizioni:

    If Cells(Rows.Count, 4).End(xlUp).Row = 1 Then

    (Rows.Count, 4) immagino sia il n della colonna del filtro
    Row = 1 a cosa si riferisce?
  • OFFLINE
    Marius44
    Post: 1.038
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Veteran
    Excel2019
    00 23/11/2022 18:17
    Ciao

    If Cells(Rows.Count, 4).End(xlUp).Row = 1
    Cosa fa questa riga di codice? Vediamola :

    Conta quante celle della colonna D (la n.4) restano visibili dopo aver applicato il filtro. Parte dal basso e va verso l'alto (.End(xlup))
    Ovviamente se il risultato della conta è 1 vuol dire che c'è solo una riga visibile e, pertanto, il numero non è stato trovato.

    Spero sia sufficiente. Ciao,
    Mario
  • OFFLINE
    De Martin.PAOLO
    Post: 57
    Registrato il: 08/07/2017
    Città: SUSEGANA
    Età: 62
    Utente Junior
    2003
    00 24/11/2022 07:06
    Ho capito, se il filtro è in riga 3 devo mettere: Row = 3
    Grazie della spiegazione
    Saluti
    Paolo