MsgBox su ricerca con filtro

di il
11 risposte

MsgBox su ricerca con filtro

Buonasera, ho creato 12 pulsati activex , uno per ogni mese, vorrei che quando clicco sul pulsante ad esempio Agosto e non ci sono record registrati , vorrei che comparisse un msbox con la scritta " nesun record trovato, invece di una pagina vuota.

Private Sub Agosto_Click()
ActiveSheet.UnProtect
    Range("I2") = ("Foglio non protetto")
Range("A5").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$J$365").AutoFilter field:=1, Criteria1:=28, _
        Operator:=11, Criteria2:=0, SubField:=0
End Sub

Questo è la macro che filtra sul pulante di agosto

Grazie a chi mi darà una mano.

11 Risposte

  • Re: MsgBox su ricerca con filtro

    Prova aggiungendo la riga

    MsgBox ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count

    e da questa deduci cosa fare

  • Re: MsgBox su ricerca con filtro

    HO fatto come dici tu mi compare un msgbox con il numero uno e il titolo microsoft excel.

    che devo fare ora perchè mi compaia il msgbox con la scritta “ nessun record trovato”

  • Re: MsgBox su ricerca con filtro

    E quante righe visualizzi? Fai delle prove e comprendi cosa è questo numero.   

  • Re: MsgBox su ricerca con filtro

    Ciao,

    devi testare il valore restituito e sulla base di tale valore imposti il messaggio

    If ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then MsgBox "Nessun record trovato.", vbInformation, "Info"
    

    Se restituisce 1 vuol dire che nella Colonna che hai Filtrato, oltre alla prima riga di intestazione dove hai posto i filtri, non ci sono altre righe visibili e pertanto il filtro non ha prodotto nessun risultato.

  • Re: MsgBox su ricerca con filtro

    In base alla dritta freddy dovrebbe arrivarci da solo, altrimenti lui come partecipa alla discussione? Sa che non sono ammesse richieste di pappa pronta…

  • Re: MsgBox su ricerca con filtro

    13/07/2023 - oregon ha scritto:


    Prova aggiungendo la riga

    MsgBox ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count

    e da questa deduci cosa fare

    Ciao Oregon, questa mi restituisce sempre 1 …. è possibile oppure ho qualche problema nel mio excel ? 

  • Re: MsgBox su ricerca con filtro

    14/07/2023 - oregon ha scritto:


    In base alla dritta freddy dovrebbe arrivarci da solo, altrimenti lui come partecipa alla discussione? Sa che non sono ammesse richieste di pappa pronta…

    Giusto !!!  ;-)

  • Re: MsgBox su ricerca con filtro

    14/07/2023 - By65Franco ha scritto:


    è possibile oppure ho qualche problema nel mio excel ? 

    È corretto. Conta l'header, che sarà sempre visibile.

    13/07/2023 - freddy60 ha scritto:


    invece di una pagina vuota.

    Quindi quando dopo il filtro trovi solo l'header, rimuovi il filtro e mostri la MsgBox.

  • Re: MsgBox su ricerca con filtro

    14/07/2023 - Sgrubak ha scritto:


    È corretto. Conta l'header, che sarà sempre visibile.

    Ciao,

    mi sono spiegato male… volevo dire, sia che non ci siano righe filtrate oppure ci siano, mi restituisce sempre e comunque 1 

    quindi anche se sono visibili oltre l'intestazione, altre righe mi ritorna sempre 1

    MsgBox ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count

     Mentre con questa

    ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count

    mi restituisce il conteggio coretto sia che il filtro abbia trovato corrispondenze oppure no
    (è limitata come funzione in quanto esegue il conteggio solo su una colonna, in questo caso quella dove viene applicato il filtro)


    Perchè si comporta così?


    Pertanto mi chiedevo se dipendeva dal mio excel (Office 2013)

  • Re: MsgBox su ricerca con filtro

    14/07/2023 - By65Franco ha scritto:


    sia che non ci siano righe filtrate oppure ci siano, mi restituisce sempre e comunque 1 

    Mmm… Anche a me, su Excel 365 Beta. Non ci avevo fatto caso.

    Quel che ho notato è che sembra funzionare bene su un foglio normale, mentre se c'è una tabella riporta sempre 1.

    Ti corrisponde?

  • Re: MsgBox su ricerca con filtro

    14/07/2023 - Sgrubak ha scritto:


    Mmm… Anche a me, su Excel 365 Beta. Non ci avevo fatto caso.

    Quel che ho notato è che sembra funzionare bene su un foglio normale, mentre se c'è una tabella riporta sempre 1.

    Ti corrisponde?

    Su tabella è un pò diverso…

    Poniamo di avere Tabella1 e filtrando la prima colonna per valori > 55 non trova nessuna corrispondenza:

    ActiveSheet.ListObjects("Tabella1").Range.AutoFilter Field:=1, Criteria1:=">55"
    
    If ActiveSheet.ListObjects("Tabella1").Range.Columns(1).SpecialCells(xlCellTypeVisible).CountLarge = 1 Then MsgBox "Nessun record trovato.", vbInformation, "Info"

    Quindi in questo caso se si contano le celle di colonna 1, la funzione ritorna 1 … cioè conteggia solo la testata della tabella.
    se vuoi testarla non mettere la tabella a partire da A1… magari posizionala qualche riga sotto ;-) 


    Alla fine è lo stesso concetto di questa applicata al foglio di lavoro e ovviamente non fa riferimento all'oggetto Tabella:

    If ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then MsgBox "Nessun record trovato.", vbInformation, "Info"

    Giusto ?

Devi accedere o registrarti per scrivere nel forum
11 risposte