Sviluppare funzionalita su Microsoft Office con VBA filtro avanzato vba non filtra la data della tabella

Login Registrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #54752 Score: 0 | Risposta

    aldo1959
    Partecipante

      buongiorno a tutto il gruppo, ho avuto modo di prendere ad esempio per le mie esigenze questo file modificato con il codice VBA. Ho notato però che quando inserisco la data nel filtro 'Data Procedura' non riconosce la data e perciò non mostra la riga filtrata. Mi potreste dire dove devo correggere il codice VBA?  Preciso che sto usando excel 2007. Grazie

      Allegati:
      You must be logged in to view attached files.
      #54754 Score: 0 | Risposta

      Raffaele53
      Partecipante
        23 pts

        Il codice filtra regolarmente la data in 'Data Procedura', pertanto presumo sia colpa di Excel-2007 ma veramente mi suona molto-molto strano.

        Fai una prova, avvia il registratore.
        Vai in B13 ed in alto premi filtro
        Vai sulla freccia in G13 e togli la spunta a due date. Premi OK
        Come si comporta? Termina la registrazione e casomai allega il codice nel forum

        PS Fuori tema in E16 "Data Nascita" esiste un 12.12.1894  che non è una DATA

        #54755 Score: 0 | Risposta

        aldo1959
        Partecipante

          ho provato a registrare la macro e funziona, ma quella del pulsante "Filtra" non funziona

          Sub Macro1()
          '
          ' Macro1 Macro
          '
          
          '
              Range("B13").Select
              Selection.AutoFilter
              ActiveSheet.Range("$A$13:$O$16").AutoFilter Field:=7, Operator:= _
                  xlFilterValues, Criteria2:=Array(2, "5/2/2018")
          End Sub
          #54756 Score: 0 | Risposta

          Marius44
          Moderatore
            58 pts

            Ciao

            Il problema NON dovrebbe essere la versione di Excel in quanto la funzione AUTOFILTER esisteva per quella emissione.

            Ho scaricato il file ed a me funziona regolarmente (ma io ho la versione 2019). Piuttosto ho notato che i "campi" del filtro vanno da 1 a 14 (uno per ogni colonna) e nella tua macro vedo Field:=7 mentre il campo DatProc è il 6. Puoi controllare?

            Ciao,

            Mario

             

            #54757 Score: 0 | Risposta

            Raffaele53
            Partecipante
              23 pts

              Ciao Mario, registrando una nuova macro è giusto  Field:=7  (parte da colonna A)

              @aldo1959: La Tua macro è corretta (in teoria deve funzionare), vedo adesso un'anomalia che forse risolve non risolve il problema.
              Nelle celle A14:A16 è scritto 1 (carattere colore bianco), non capisco il perchè della presenza del numero però è anomalo nel caso devi aggiungere altre righe. Per me vanno cancellati e nel VBA modificare la riga >>>ur = WS.Range("A" & Rows.Count).End(xlUp).Row con
              ur = WS.Range("B" & Rows.Count).End(xlUp).Row

              Ps. Stai facendo prove sullo stesso file che hai allegato con tre record? Hai aggiunto altre righe? Hai cancellato A14:A16?

              #54760 Score: 0 | Risposta

              aldo1959
              Partecipante

                Buongiorno, allora ho cancellato nelle celle a14:a16 il numero 1 e ho fatto la modifica della riga nel vba, però ho modificato anche la riga 

                WS.Range("$B$13:O" & ur).AutoFilter Field:=6, Criteria1:=DatProc, Operator:=xlAnd

                con la riga 

                WS.Range("$B$13:O" & ur).AutoFilter Field:=6, Criteria1:=CDate(DatProc), Operator:=xlAnd

                aggiungendo CDate e funziona

                La cosa strana è che se modifico il formato celle in "generale" mi dà i numeri seriali e funziona, modificando il formato celle in "data" non funziona senza la modifica CDate. 

                mistero di excel 2007, comunque grazie a tutti

                #54761 Score: 0 | Risposta

                Raffaele53
                Partecipante
                  23 pts

                  Bravo se hai risolto. Secondo me l'errore era solamente nella dichiarazione della variabile perché viene interpretato come testo con Excel-2007, con versioni maggiori funziona regolarmente.
                  Sarebbe stato >>>DatProc As Date, oppure formattare tutte ie celle come testo.
                  Pure altre "variabili As String" sarebbero da rivedere, però cambiare tali variabili si va incontro a diversi altri errori VBA. Meglio lasciarli tutti String e bene hai fatto ad aggiungere il CDate

                  Ps. Nella "Sub Ripristina", per visualizzare sempre tutti i record prima di >>>Set WS = Nothing metterei >>>WS.Cells(14, 1).Activate

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: filtro avanzato vba non filtra la data della tabella
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: