Autofiltro: no se ejecuta en la macro

Genero una macro en Excel que rastrea una tabla Excel y filtra una columna concreta:
1)Autofiltro personalizado (para seleccionar sólo datos entre una fecha y otra), acepta las opciones del autofiltro (columna F)
2) Voy a otra columna (columna K) y la copio (así sólo habré seleccionado datos entre esas 2 fechas anteriores)
3) La pego en otra hoja Excel para procesar esos datos más tarde...
El gran problema es que miro el código VBA y SI que se hace bien el autofiltrado de datos, pero cuando veo el resultado final de la ejecución de la macro o la ejecuto paso a paso NO filtra datos (la selección de filas aparece en blanco !), con lo cuál no lleva ni un solo dato seleccionado al sitio de destino.
Da la sensación de que al pulsar OK con el ratón en la ventana de autofiltro personalizado NO lo tiene en cuenta y sigue ejecutándose la macro.
¿Cuándo estoy grabando la macro, sigo todos los pasos y lo hace correctamente, pero cuando pincho el botón de ejecución de la macro después, NO FUNCIONA (no filtra nada de nada), Qué estoy haciendo mal?
Columns("F:F"). EntireColumn. AutoFit
Columns("F:F").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=">=15/07/2005", Operator:=xlAnd _
, Criteria2:="<=31/07/2005"
Columns("K:K").Select
Selection.Copy
Windows("Libro1.xls").Activate
Sheets("Hoja2").Select
Columns("A:A").Select
ActiveSheet. Paste
Parece que el sistema NO entiende que cuando se ejecuta el autofiltro personalizado tiene que aparecer la selección de filas filtradas entre las fechas filtradas, con lo cuál no sirve para nada copiar lo que he filtrado,... Porque NO selecciona ninguna fila de datos.
Cuando creo la macro y la grabo ejecutándola manualmente, SI que filtro los datos y al aceptar el autofiltro personalizado aparecen todas las filas con los datos correspondientes para poder ser procesados posteriormente.
¿Por favor, alguna sugerencia?
Gracias por el interés y esfuerzo.
Y ya de paso, otro problema: cuando abro el fichero para autofiltrarlo, Excel considera que se ha modificado y ya no puedo cerrarlo automáticamente con una macro (porque aparece la ventana de "el fichero ha sido modificado. Desea guardar los cambios? Aceptar, Cancelar,..). Se puede hacer algo para que por macro se cierre el fichero sin preguntar nada ?.

2 Respuestas

Respuesta
3
El tema es que Excel necesita las fechas en formato mm/dd/yyyy para aplicar el filtro.
Sub Autofiltro()
'macro grabada por Elsamatilde e incluída en el Manual '300Macros'
'http://es.geocities.com/lacibelesdepunilla/manual
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)
'establecer criterio
fecha1 = "15/07/2005"
'o solicitar fecha con Inputbox
fecha2 = InputBox("Ingrese última fecha")
'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 6 (F)
Range("F2").Select
'se aplica el filtro en la columna 6 (F) con 2 criterios
Selection.AutoFilter Field:=2, Criteria1:=">=" & fecha1, Operator:=xlAnd, Criteria2:="<=" & fecha2
Range("G5:G10").Select
Selection.Copy
Windows("Libro1.xls").Activate
Sheets("Hoja2").Select
Range("A2").Select
ActiveSheet.Paste
'regresa al libro original
Windows("LibroPruebas.xls").Activate
Application.CutCopyMode = False
End Sub
Para evitar el mensaje debes utilizar la instrucción
Application.DisplayAlerts = False
La rutina entonces será:
Sub cierra()
Application.DisplayAlerts = False
Workbooks("Libro1.xls").Close True
End Sub
Saludos y no olvides finalizar la consulta
Respuesta

Elsa yo no te hice esta pregunta pero me resolviste un problema

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas