Me gusta mucho tu estilo, por eso recurro a ti, tengo una dificultad cuando quiero hacer un filtro en una hoja de excel con datos introducidos desde un formulario, porque el resultado no muestra ninguna fila, sin embargo, al entrar directamente al filtro de la hoja, y sin cambiar los datos se refresca, aparecen las filas que se le solicitan, sabes si puede solventar esta dificultad, es para una aplicación en excel que programé para mi trabajo.
Si los datos son introducidos con un formulario del menú Datos, Userform o manualmente no debiera hacer diferencia a la hora de realizar un filtro. Mencionas que 'al entrar directamente al filtro de la hoja' no hay problemas, entonces debes explicarme de qué otra manera estás intentando realizar el filtro (¿por macro? ) Y si es así qué tipo de campos son (fechas, valores, etc) Espero tus comentarios. Saludos
Excel necesita las fechas en formato mm/dd/yyyy para aplicar el filtro. Podrás adaptar la rutina siguiente que solicita el rango de fechas a través de controles InputBox (ajústalo a tu formulario) y luego las convierte en el formato apropiado para Excel, para luego aplicar filtros. Sub Autofiltro() Dim fechaini As String, fechafin As String, fecha1 As String, fecha2 As String Dim mes As Integer, mes2 As Integer, dia As Integer, dia2 As Integer Dim año As Integer, año2 As Integer 'solicitud de rango a filtrar (* otras opciones en Notas al pie) fechaini = InputBox("Ingrese primer fecha") fechafin = InputBox("Ingrese última fecha") 'se puede establecer la fecha del día fecha1 = Format(Now(), "dd/MM/yyyy") ' o si fuese la fecha del InputBox fecha1 = Format(fechaini, "dd/MM/yyyy") fecha2 = Format(fechafin, "dd/MM/yyyy") 'convierte las fechas en el formato "mm-dd-yyyy" 'con la primer instrucción se guarda en la variable 'mes' el valor de fecha1 desde la posición 4 con un largo de 2 mes = Mid(fecha1, 4, 2) dia = Mid(fecha1, 1, 2) año = Mid(fecha1, 7, 4) fecha1 = mes & "-" & dia & "-" & año mes2 = Mid(fecha2, 4, 2) dia2 = Mid(fecha2, 1, 2) año2 = Mid(fecha2, 7, 4) fecha2 = mes2 & "-" & dia2 & "-" & año2 'se establece el filtro para la columna 5 (E) Range("E2").Select Selection.AutoFilter 'se aplica el filtro en la columna 5 (E) con 2 criterios Selection.AutoFilter Field:=5, Criteria1:=">=" & fecha1, Operator:=xlAnd, _ Criteria2:="<=" & fecha2 End Sub Si esto te sirve y soluciona tu problema, no olvides finalizar Saludos Elsa *** rutina extraída de mi manual '400Macros' en español.
Bueno, la hoja de excel contiene datos introducidos mediante una macro con la instrucción Activecell = format(date,"dd/mm/aaaa"), y los datos de rango de fecha son introducidos mediante un formulario con los campos fecha inicial y fecha final, validando por código que esta información es una fecha válida, pues por defecto todos los campos son tipo texto en excel, y cuando tomo los datos para el filtro el resultado es cero filas, pero dejando el formulario en "modal = false" puedo entonces entrar a la hoja de datos, abro el menú desplegable del filtro y veo que efectivamente está posicionado sobre la opción personalizar, la selecciono y los campos están llenos con la información introducida a través del formulario, doy aceptar y aparecen las filas que originalmente debieron ser filtradas del total de los registros, esa es mi situación, ¿me puedes ayudar o definitivamente esta es una debilidad del excel?
Podes repreguntar si te ha quedado alguna duda, pero si el tema ya ha sido resuelto