Macro Filtro copiar pegar

Estoy trabajando con una macro, que una de sus funciones debe hacer lo siguiente: En la hoja 1 tengo una tabla con autofiltros, y en la hoja dos tengo que pegar los valores que levanto el filtro. El tema es que cuando lo hago con record macro, las celdas a pegar son con un rango fijo, es decir, si en la tabla cambio un valor, aunque el filtro funcione, lo que la macro pega es las celdas del rango fijo en vez del nuevo resultado. Como puedo crregir eso para que me traiga "el resultado del filtro". Muchísimas gracias!
Sub Macro2()
'
' Macro2 Macro
' Macro recorded 02/04/2009 by Eloisa
'
'
Range("C13").Select
Sheets("Sheet2").Select
Selection.AutoFilter Field:=1, Criteria1:="b"
Selection.AutoFilter Field:=2, Criteria1:="18"
Selection.AutoFilter Field:=2, Criteria1:="24"
Selection.AutoFilter Field:=2, Criteria1:=">10", Operator:=xlAnd
Range("A12:C12").Select ACA ESTA EL PROBLEMA
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("A12").Select
Sheets("Sheet1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub

1 Respuesta

Respuesta
1
Range("C13").Select
Sheets("Sheet2").Select
Selection.AutoFilter Field:=1, Criteria1:="b"
Selection.AutoFilter Field:=2, Criteria1:="18"
Selection.AutoFilter Field:=2, Criteria1:="24"
Selection.AutoFilter Field:=2, Criteria1:=">10", Operator:=xlAnd
Range("A12:C12").Select ACA ESTA EL PROBLEMA
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select          'agregue esta linea, usalo asi
Selection.Copy
Range("A12").Select
Sheets("Sheet1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
Te agradezco mucho la respuesta. Aprovecho para preguntarte si me podes ayudar ahora con lo siguiente.
Necesito borrar todas las filas vacías, desde la fila 9 a la 90. La verdad no tengo idea de como hacerlo. Te agradezco sugerencias.
Sub Eliminar_filas_vacias()
'ocultamos el procedimiento
Application.ScreenUpdating = False
'suprondremos que vamos a inspeccionar 1.000 filas,
'en busca de todas las que haya en blanco
For i = 1 To 1000
'si la celda está vacía...
If ActiveCell = "" Or IsNull(ActiveCell) Then
'nos quedamos con la celda donde estamos
'para volver a ella posteriormente
celda = ActiveCell.Address
'vamos hasta la primera celda a la
'derecha que encontremos, con datos
Selection.End(xlToRight).Select
'si está vacía esa celda
If ActiveCell = "" Or IsNull(ActiveCell) Then
'miramos si a la izquierda hay datos
Selection.End(xlToLeft).Select
'si también está vacía esa celda
If ActiveCell = "" Or IsNull(ActiveCell) Then
'eliminamos la fila
Selection.EntireRow.Delete
'volvemos a la celda donde estábamos
'siempre y cuando no estemos en la fila 1
If ActiveCell.Row <> 1 Then Range(celda).Offset(-1, 0).Select
End If
End If
End If
'pasamos a la siguiente fila
ActiveCell.Offset(1, 0).Select
Next
'mostramos el procedimiento
Application.ScreenUpdating = True
End Sub
Usa esta macro
En el código que te envíe anteriormente, es necesario ajecutarlo 5 veces para que te elimine todas las folas vacías, puede hacerlo así
Has unamacro nueva
A esa macro nueva le poner este código
Sub MyMacro()
Run ("Eliminar_Filas_vacias")
5 veces este codigo
End sub
Y al botón le agregas la macro que tu creaste
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas