Filtrar en excel desde visual basic

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.

1 Respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas