Efectuar filtro avanzado en hoja diferente

Hola expertos.

Recurro a ustedes porque no se como hacer un filtro avanzado en modulo de hoja, haciendo referencia a otra hoja.

En la hoja2, celda B2 esta el encabezado de la lista y a partir de B3 los valores de la lista.

Esta lista es resultado de una extracción anterior, por lo que la lista es variable.

Lo que pretendo, es en la hoja3, hacer listas desplegables en los rangos A6:A40 y A73:A82 eliminando de la lista los registros seleccionados.

Este es el código que estoy utilizando sin éxito:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
'For Each Hoja In Worksheets
' Select Case Hoja.Name
' Case "Hoja3", "Hoja1"
' Case Else
' Hoja.Unprotect Password:="XXXX"
' Hoja.Visible = True
' End Select
' Next
If Target.Address = "$N$3" Then
Macro1
Macro2
Macro3
Sheets("Hoja3").Select
End If
Dim mDatos
If Intersect(Target, [A6:A:40, A73:A82]) Is Nothing Then Exit Sub
[a6;a40,a73:a82].Validation.Delete
'Celda auxiliar
Hoja2.[ab2] = "=b3<>0"
'Filtro los números de la columna B, desde la fila 3
'y hacia abajo. En B3 hay un título (es necesario).
With Hoja2
.Range([b2], [b2].End(xlDown)).AdvancedFilter 2, [ab1:ab2], [aa1], True
mDatos = WorksheetFunction.Transpose(Range([aa2], [aa1].End(xlDown)))
'Asigno a la celda D6 una validación de datos
End With
Hoja3.[a6;a40,a73:a82].Validation.Add 3, Formula1:=Join(mDatos, ",")
'Limpio el rango auxiliar utilizado
Hoja2.[aa1], [aa1].end(xldown).Delete
End with
'For Each Hoja In Worksheets
' Select Case Hoja.Name
' Case "Hoja3", "Hoja1"
' Case Else
' Hoja.Protect Password:="XXXX"
' Hoja.Visible = False
' End Select
' Next
Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o