VBA Filtro



  • VBA - Multi-Filtro
    di Raffaele_53 data: 21/03/2016 19:47:34

    Ciao a tutti
    Tramite VBA dovrei fare un filtro in un DB con più opzioni
    Esiste un METODO per non verificare tramite un ciclo tutti i record esatti? (In una colonna, forse devo usare LIKE)

    Devo fare una premessa, in teoria non saprò in quale colonna l'utente applica il filtro e pertanto in quale colonna dovrei applicarlo.
    EX Nome,Cognome,Via,Comune ecc ecc
    Per adesso mi basterebbe sapere" quanti filtri posso applicare con 2007"

    Ultima cosa, tra i miei appunti ho questo codice (così comè), sapresti dirmi se è valido e come applicarlo?   
     
    ATTENZIONE LE Intestazioni devono essere uguali 
    per la prima d'esempio in colonna A in A1 = Nome  e A11 = Nome (dove in A12,a13,a14 sono i parametri di selezione)
    Unique:=True unico
    Unique:=True False Tutti
    
    Sub Macro1()
    '
    ' Macro1 Macro
    '
    
    '
        Range("A1:A9").Select
        Range("A1:A9").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _
            ("Foglio2!Criteria"), Unique:=True' Unique:=True False
    End Sub
    
    
    Sub Macro2()
    '
    ' Macro2 Macro
    '
    
    '
        Range("A11:A19").Select
        Range("A11:A19").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            Range("B1:B4"), Unique:=True
    End Sub
    
    
    Option Explicit 
    
     Sub Multi_Filtro() 
         Dim UR As Long, Cr1 As Long, Cr2 As Long, Destinazione As String 
    
         Application.ScreenUpdating = False 
         UR = Range("A" & Rows.Count).End(xlUp).Row 
         Range("A13:A" & UR).AutoFilter Field:=1, Criteria1:="<>" 
         ActiveSheet.ShowAllData 
    
     ' Servono a calcolare dinamicamente gli intervalli dell'area da filtrare e del'area dei criteri 
         UR = Range("A" & Rows.Count).End(xlUp).Row 
         Cr1 = Range("U1").End(xlDown).Row 
         Cr2 = Range("U" & Rows.Count).End(xlUp).Row 
    
     ' 
     ' ATTENZIONE la prima cella dell'intervallo dei criteri dei essere l'intestazione della colonna da filtrare 
     ' nell'esempio in U15 devi scrivere "Cat" 
         Range("A13:N" & UR).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _ 
             ("U" & Cr1 & ":U" & Cr2), Unique:=False 
         Range("C10") = "Più Criteri" 
         Application.ScreenUpdating = True 
         MsgBox "Effettuata la selezione per 'Più Criteri'" 
     End Sub 
    
    Nota ...Range("A13:N" & UR).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _ 
             ("U" & Cr1 & ":U" & Cr2), Unique:=False