FILTRAR POR FECHAS

09/07/2007 - 19:52 por galtor | Informe spam
Hola de nuevo

Estoy tratando de filtrar informacion de campos de fechas que cumplan
con un rango de fechas desde un formulario (fechaini a fechafin), para
copiar en otra hoja sólo la información que cumpla con estos
parámetros.

Conozco un poco de lenguaje sql pero no se puede aplicar acá y estoy
atorado con eso, estoy usando un "while" para buscar hacia abajo por
toda la culumna que tiene el parametro fecha y en cada celda pauso el
proceso para comparar los datos usando una condicion, mas o menos así:

private sub filtrarRegistros()
Dim i as integer
'funcion que me coloca en la hoja y celda donde quiero buscar
call posicion_busqueda(8,"B3")
i=0
While not isempty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
'Con esta condicion comparo los datos
If ActiveCell.Value >= txtDel.Text And ActiveCell.Value <txtAl.Text Then
i = i + 1
'si cumplen almaceno el id del registro en un arreglo
idPolizas(i) = ActiveCell.Offset(0, -8).Value
End If
Wend
'y luego mando llamar otra funcion con la que lleno la hoja con los
datos filtrados
Call llenaReporte

end sub

El problema es que no me filtra nada, manda todos los registros que
tengo en la hoja aunque no cumplan con los parametros, incluso las
celdas sin valor, debo usar otras instrucciones.

Algo estoy haciendo mal! ¿alguna sugerencia para este novato que no
deja de postear consultas? -jejeje

Gracias de antemano
Cristian
 

Leer las respuestas

#1 Héctor Miguel
09/07/2007 - 21:33 | Informe spam
hola, Cristian !

1) considera que los textboxes [txtDel.Text y txtAl.Text] pueden *tomar* todo tipo de entradas textuales y...
2) [seguramente] tu configuracion regional utiliza un formato/secuencia/orden/... de fechas [p.e.] d/m/aa [pero]...
3) puesto que vba ES 'US-Centric'... los formatos de fecha 'los /toma/lee' con el orden m/d/aa [ademas]...
4) en tanto no conviertas a valores-fecha que se puedan comparar... no puedes usar instrucciones del tipo:
-> If ActiveCell.Value >= txtDel.Text And ActiveCell.Value <= txtAl.Text Then
[o sea... comparando *textos* versus el *activecell.value* ???]

podrias comentar cual es la *historia completa* y/o el objetivo que buscas con los... *filtrados* ?
- autofiltros ?... filtros avanzados ?... vas a rellenar algun otro control ?... que vas a hacer con el resultado ? -???-

saludos,
hector.

__ la consulta original __
Estoy tratando de filtrar informacion de campos de fechas que cumplan con un rango de fechas desde un formulario (fechaini a fechafin)
para copiar en otra hoja sólo la información que cumpla con estos parametros.
Conozco un poco de lenguaje sql pero no se puede aplicar aca y estoy atorado con eso
estoy usando un "while" para buscar hacia abajo por toda la culumna que tiene el parametro fecha
y en cada celda pauso el proceso para comparar los datos usando una condicion, mas o menos asi:

private sub filtrarRegistros()
Dim i as integer
'funcion que me coloca en la hoja y celda donde quiero buscar
call posicion_busqueda(8,"B3")
i=0
While not isempty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
'Con esta condicion comparo los datos
If ActiveCell.Value >= txtDel.Text And ActiveCell.Value <= txtAl.Text Then
i = i + 1
'si cumplen almaceno el id del registro en un arreglo
idPolizas(i) = ActiveCell.Offset(0, -8).Value
End If
Wend
'y luego mando llamar otra funcion con la que lleno la hoja con los datos filtrados
Call llenaReporte

end sub

El problema es que no me filtra nada, manda todos los registros que tengo en la hoja aunque no cumplan con los parametros
incluso las celdas sin valor, debo usar otras instrucciones.
Algo estoy haciendo mal! alguna sugerencia para este novato que no deja de postear consultas? -jejeje

Preguntas similares