Filtro

Private Sub Worksheet_Change(ByVal Target As Range)
Dim fila, filalibre As Integer
If Target.Row > 20 Then
If Cells(Target.Row, 16).Value = "0" Then
If Sheets("historico").Range("A2").Value = "" Then
filalibre = 2
Else
filalibre = Sheets("historico").Range("A1").End(xlDown).Row + 1
End If
fila = Target.Row
Range("A" & fila & ":V" & fila).Copy Destination:=Sheets("historico").Range("A" & filalibre)
ActiveSheet.Unprotect
Target.EntireRow.Delete Shift:=xlShiftUp
End If
End If
End Sub
Hola elsa:
Esta rutina me va de maravilla, el problema surge cuando tengo activado el filtro en "historico", ¿pues se pierde información.me ayudas?
Saludos y felices fiestas

1 Respuesta

Respuesta
1
Si, necesitas quitar el autofiltro para obtener la última fila con datos
Se me ocurre que debieras incluir la instrucción que quite el autofiltro antes de obtener la variable 'filalibre' y lo vuelvas a colocar luego. Aquí te adjunto unas instrucciones de ejemplo:
?.
'el ejemplo tiene el filtro en col B
Sheets("historico").Range("B1").AutoFilter Field:=2
If Sheets("historico ").Range("A2").Value = "" Then
filalibre = 2
Else
filalibre = Sheets("historico ").Range("A65536").End(xlUp).Row + 1
End If
Sheets("historico ").Range("B1").AutoFilter Field:=2, Criteria1:=">300", Operator:=xlAnd
?..
Para obtener la instrucción del autofiltro utilizá la grabadora
Hola Elsa
Gracias por contestarme pronto:
En cuanto al criterio que me mandas, no me es del todo eficiente pues se queda el filtro activado y algunas lineas no se copian.
Saludos
Creo que no se entendió la respuesta: solo te estoy enviando la forma de quitar el autofiltro ANTES de tu instrucción que busca la última fila.
'el ejemplo tiene el filtro en col B
Sheets("historico").Range("B1").AutoFilter Field:=2
Como nro de Field o col podes colocar 1 o sea A
Luego te agregué SOLO COMO EJEMPLO una instrucción que habilita el Autofiltro, pero te mencionaba que esa instrucción la tenés que generar vos con la grabadora. Cuando la enciendas, habilitá el Autofiltro con TUS opciones y criterios y detené la grabadora.
Esa instrucción que encontrarás en un módulo la tenés que colocar en reemplazo de la que te envié:
Sheets("historico ").Range("B1").AutoFilter Field:=2, Criteria1:=">300", Operator:=xlAnd
Como no conozco tus opciones generé un ejemplo cualquiera, solo para que te guíes en dónde tenés que colocar la instrucción.
Saludos y espero que ahora se comprenda mejor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas