› Sviluppare funzionalita su Microsoft Office con VBA › filtro avanzato vba non filtra la data della tabella
-
AutoreArticoli
-
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.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 forumPS Fuori tema in E16 "Data Nascita" esiste un 12.12.1894 che non è una DATA
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 SubCiao
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
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).RowPs. Stai facendo prove sullo stesso file che hai allegato con tre record? Hai aggiunto altre righe? Hai cancellato A14:A16?
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
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 CDatePs. Nella "Sub Ripristina", per visualizzare sempre tutti i record prima di >>>Set WS = Nothing metterei >>>WS.Cells(14, 1).Activate
-
AutoreArticoli
