Problema con buscar entre fechas en macros excel

Respuesta de
a
Avatar
Usuario
Hola a todos, es la primera vez que posteo aquí, pero por lo que he leído en estos foros, seguro que me solucionáis el tema.
Tengo una pequeña aplicación en excel con macros y forms, explico un poco lo que hago:
Los datos a introducir son nombres, fechas, teléfonos y cantidades:
Esta es la forma en la que añado la fecha a hoja "datos". Le indico el formato, para que cuando haga la búsqueda, me reconozca que es una fecha:
...
ActiveCell = Format(TextBox3, "mm/dd/yyyy") 'copiar el contenido del textbox3 en la celda indicada
...
Ahora, en la hoja "datos" tengo lo siguiente:
dos calendarios, donde calendar1=celda M1 (fecha inicial) y calendar2=celda N1 (fecha final)
un commandbutton con el siguiente código:
Private Sub CommandButton1_Click()
Sheets("datos").Select
ActiveSheet.Range("a1:k1000").AutoFilter field:=4, Criteria1:=">=" & Format(Range("M1"), "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(Range("N1"), "mm/dd/yyyy")
End Sub
Y el filtro me lo hace perfecto, el PROBLEMA viene cuando todo esto, lo ejecuto desde un userform (que es lo que necesito), el form que tengo es el siguiente:
2 textbox, 2 calendarios y un botón
Private Sub Calendar1_Click()
TextBox1 = Calendar1.Value
Range("M1") = TextBox1
End Sub
Private Sub Calendar2_Click()
TextBox2 = Calendar2.Value
Range("N1") = TextBox2
End Sub
Private Sub CommandButton1_Click() 'es exactamente el mismo codigo que el anterior
Sheets("datos").Select
ActiveSheet.Range("a1:k1000").AutoFilter field:=4, Criteria1:=">=" & Format(Range("M1"), "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(Range("N1"), "mm/dd/yyyy")
End Sub
Pues con este form me realiza el filtro por la columna fecha, pero no encuentra coincidencias, cuando si que las ahí.
Repito, es lo mismo que hago desde la propia hoja "datos" pero desde un form, y me funciona.
¿Por qué? ¿Alguna ayudita?
P.D.: Uso windows xp y office 2003 (por si vale de algo esta información)
Gracias
Avatar
Experto
Hola:
No probé tu código, pero leyéndolo veo que te falta convertir los datos 'textbox' a fecha.
Movelos a la hoja con esta instrucción:
Range("M1") = CDate(TextBox1)   y lo mismo con el otro campo

Probalo y comentame
Sdos
Elsa
http://aplicaexcel.galeon.com/manuales.htm
Avatar
Usuario
Gracias Elsa por la respuesta,
No se porque, pero los datos del calendario no me los pegaba en la hoja DATOS sino en otra hoja, ahí tenía el problema, pero esa parte está solucionada.
Ahora, lo que realmente necesito es lo siguiente:
Que las fechas que introduzco a través de los calendarios me los sitúe, por ejemplo, en Hoja2 celdas A1 y B1, que realice la búsqueda en la hoja DATOS y copie lo filtrado en la hoja2. He probado algo esto, que es lo que se me ocurre, pero da error:
Private Sub CommandButton1_Click()
Sheets("datos").Select
ActiveSheet.Range("a1:k1000").AutoFilter field:=4, Criteria1:=">=" & Format(Sheets(hoja2).Range("A1"), "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(Sheets(hoja2).Range("B1"), "mm/dd/yyyy")
End Sub
P.D: No me ha hecho falta lo de Cdate, con indicarle el format()"mm/dd/yyyy" me ha servido
Saludos y gracias de antemano
Avatar
Usuario
Bueno, he dado con una solución, no muy profesional, pero he dado con ella, como lo que necesitaba era que filtrara en la hoja "datos" por dos criterios que tenía en la hoja2, lo que he hecho ha sido usar 2 celdas de la hoja "datos" y decirle "=hoja2!A1" y usar la macro del filtro solo con los datos de la hoja "datos".
Saludos