Discussione:
Filtro avanzato su date con Excel 2010
(troppo vecchio per rispondere)
Stefano G.
2011-08-08 09:14:56 UTC
Permalink
Salve, ho un problema con Excel 2010.

Ho realizzato un database utilizzando un bel po' di codice VBA per creare
una serie di filtri avanzati.
Ho, in pratica, utilizzato il registratore di macro e modificato il codice.

Il problema: se attivo il registratore di macro e applico un filtro avanzato
sul campo "Data" (in modo da filtrare i dati in un range di date a
piacimento), durante la registrazione il comando viene regolarmente
eseguito. Se annullo l'operazione e lancio la macro registrata, non accade
nulla.
Non riesco a capire il perché.

Qualcuno mi può aiutare?

Grazie 1000 in anticipo.

Stefano
Bruno Campanini
2011-08-08 13:46:02 UTC
Permalink
Post by Stefano G.
Salve, ho un problema con Excel 2010.
Ho realizzato un database utilizzando un bel po' di codice VBA per creare una
serie di filtri avanzati.
Ho, in pratica, utilizzato il registratore di macro e modificato il codice.
Il problema: se attivo il registratore di macro e applico un filtro avanzato
sul campo "Data" (in modo da filtrare i dati in un range di date a
piacimento), durante la registrazione il comando viene regolarmente eseguito.
Se annullo l'operazione e lancio la macro registrata, non accade nulla.
Non riesco a capire il perché.
Qualcuno mi può aiutare?
La data iniziale e quella finale vanno formattate
"all'inglese":
=================================================
Public Sub DateFilter()
Dim SourceRange As Range, Scelta As String
Dim DataIni, DataFin, NumCol As Integer

Set SourceRange = [Sheet4!A1] ' prima cella del database
NumCol = 3 ' numero colonne del database

Do
Scelta = InputBox("Data iniziale")
If Scelta = "" Then Exit Sub
Loop Until IsDate(Scelta)
DataIni = Format(Scelta, "mm/dd/yy")

Do
Scelta = InputBox("Data finale")
If Scelta = "" Then Exit Sub
Loop Until IsDate(Scelta)
DataFin = Format(Scelta, "mm/dd/yy")

If Not IsEmpty(SourceRange(2, 1)) Then
Set SourceRange = SourceRange.Resize _
(SourceRange.End(xlDown).Row - SourceRange.Row + 1, NumCol)
End If

SourceRange.AutoFilter Field:=1, Criteria1:=">=" & DataIni, _
Operator:=xlAnd, Criteria2:="<=" & DataFin, _
VisibleDropDown:=False

End Sub
=================================================

Bruno
Stefano G.
2011-08-08 14:21:39 UTC
Permalink
Grazie.

Adesso la provo e ti farò sapere.

Un cordiale saluto

Stefano
Post by Stefano G.
Salve, ho un problema con Excel 2010.
Ho realizzato un database utilizzando un bel po' di codice VBA per creare
una serie di filtri avanzati.
Ho, in pratica, utilizzato il registratore di macro e modificato il codice.
Il problema: se attivo il registratore di macro e applico un filtro
avanzato sul campo "Data" (in modo da filtrare i dati in un range di date
a piacimento), durante la registrazione il comando viene regolarmente
eseguito. Se annullo l'operazione e lancio la macro registrata, non accade
nulla.
Non riesco a capire il perché.
Qualcuno mi può aiutare?
La data iniziale e quella finale vanno formattate
"all'inglese":
=================================================
Public Sub DateFilter()
Dim SourceRange As Range, Scelta As String
Dim DataIni, DataFin, NumCol As Integer

Set SourceRange = [Sheet4!A1] ' prima cella del database
NumCol = 3 ' numero colonne del database

Do
Scelta = InputBox("Data iniziale")
If Scelta = "" Then Exit Sub
Loop Until IsDate(Scelta)
DataIni = Format(Scelta, "mm/dd/yy")

Do
Scelta = InputBox("Data finale")
If Scelta = "" Then Exit Sub
Loop Until IsDate(Scelta)
DataFin = Format(Scelta, "mm/dd/yy")

If Not IsEmpty(SourceRange(2, 1)) Then
Set SourceRange = SourceRange.Resize _
(SourceRange.End(xlDown).Row - SourceRange.Row + 1, NumCol)
End If

SourceRange.AutoFilter Field:=1, Criteria1:=">=" & DataIni, _
Operator:=xlAnd, Criteria2:="<=" & DataFin, _
VisibleDropDown:=False

End Sub
=================================================

Bruno

Continua a leggere su narkive:
Loading...