Filtrar rango de fechas

Estoy tratando de filtrar un rango entre dos fechas usando dos textbox uno para cada fecha por medio de una macro, el filtro se ejecuta pero no muestra valores a pesar de que los datos existen. Y el código que uso es el siguiente.
Dim dato As Date
Dim dato1 As Date
dato = Format(Fechaini, "dd/mm/yyyy")
dato1 = Format(Fechafin, "dd/mm/yyyy")
Worksheets("seguimiento").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=10, Criteria1:=">dato", Operator:=xlAnd,_ criteria2:="<dato1"
Alguien me

1 respuesta

Respuesta
1
'ES UN ERROR QUE TIENE EXCEL, PERO SE SOLUCIONA ASÍ.
'AQUÍ TIENES TU NUEVO CÓDIGO:
Dim dato As Date
Dim dato1 As Date
'Declarar variables auxiliares para la conversión
Dim Fecha1numero As Double, Fecha2numero As Double
Dim Temp1 As String, Temp2 As String
dato = Format(Fechaini, "dd/mm/yyyy")
dato1 = Format(Fechafin, "dd/mm/yyyy")
'________________________________________________________________________
'OJO!1!, Esto es un error:
'   ... Criteria1:=">dato", ...  |Así no se concatena.
'Se concatena primero en una variable string auxiliar:
'   stringtemp = ">" & dato
'Y luego sí pones la variable auxiliar como criterio
'   ... Criteria1:=stringtemp, ...
'OJO!2!, PERO NO QUIERE DECIR QUE SI LO HUBIERAS HECHO BIEN,
'TE HABRÍA FUNCIONADO, NO!.
'DEBES HACER LA CONVERSIÓN DE LAS VARIABLES DATE A DOUBLE.
'PORQUE INCLUSIVE AUN DESPÚES DE GRABADA, UNA MACRO DE FILTRADO DE FECHAS,
'ÉSTA NO FUNCIONA.
'________________________________________________________________________
'Convierte fecha a número:
Fecha1numero = dato
Fecha2numero = dato1
'Concatenas ASÍ:
Temp1 = ">=" & Fecha1numero 'Ojo, yo uso Mayor o igual a...
Temp2 = "<=" & Fecha2numero 'y Menor o igual a...
Worksheets("seguimiento").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=10, Criteria1:=Temp1, Operator:=xlAnd, Criteria2:=Temp2
Hola Experto gracias por tu respuesta, apliqué los cambios y aun no me quiere filtrar
Envíame tu macro completa.
Dim dato As Date
Dim dato1 As Date
'Declarar variables auxiliares para la conversión
Dim Fecha1numero As Double, Fecha2numero As Double
Dim Temp1 As String, Temp2 As String
dato = Format(Fechaini, "dd/mm/yyyy")
dato1 = Format(Fechafin, "dd/mm/yyyy")
Fecha1numero = dato
Fecha2numero = dato1
'Concatenas ASÍ:
Temp1 = ">=" & Fecha1numero 'Ojo, yo uso Mayor o igual a...
Temp2 = "<=" & Fecha2numero 'y Menor o igual a...
Worksheets("seguimiento").Select
Range("a1").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=2, Criteria1:="A-Cotizacion", Operator:=xlAnd
    Selection.AutoFilter Field:=10, Criteria1:=Temp1, Operator:=xlAnd, Criteria2:=Temp2
A mí me funciona perfectamente el código; mira el paso a paso en este video:
http://www.zshare.net/download/786937721391f020/
Ya encontré el problema cuando le quito esta linea me funciona
Selection.AutoFilter Field:=2, Criteria1:="A-Cotizacion", Operator:=xlAnd
Si la coloco no.
Que puedo hacer, no se la puedo quitar
Según tu macro, tu tabla comienza en A1, que es la celda que seleccionas al iniciar.
La variable Field:=2 de la instrucción que estás quitando,
indica que el primer filtrado lo hace por la segunda columna
de la tabla seleccionada, en este caso la segunda columna es B.
Pero no sé por qué no te funciona. Pero prueba quitándole el
operador: Operator:=xlAnd, déjala así:
Selection.AutoFilter Field:=2, Criteria1:="A-Cotizacion"
Y verifica que todas las columnas tengan encabezados.
Aaaaa, y agrega esta instrucción al inicio de la macro:
Application.ScreenUpdating = False
'Esto hace que excel no muestre Flashes, parpadeos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas