Validación de datos eliminando registro seleccionado

Buenas expertos.

Intento acoplar un código en excel 2007 en un modulo de pagina.

En la hoja1, A1 tengo una lista con su encabezado.

En la celda C2 la siguiente formula:

=CONTAR.SI(Hoja3!$A$6:$B$40; A2)=0

y en modulo de la hoja3:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
For Each Hoja In Worksheets
 Select Case Hoja.Name
 Case "Hoja3", "Hoja2", "Hoja1"
 Case Else
 Hoja.Unprotect Password:="xxx"
 Hoja.Visible = True
 End Select
 Next
If Target.Address = "$N$3" Then
Macro1
Macro2
Macro3
Macro4
End If
Dim mLista
If Intersect(Target, [a6:a40]) Is Nothing Then Exit Sub
[a6:a40].Validation.Delete
With Hoja8
 .[a1].CurrentRegion.AdvancedFilter 2, .[c1:c2], .[g1], False
 If .[g3] <> "" Then
 mLista = WorksheetFunction.Transpose(.Range(.[g2], .[g1].End(xlDown)).Value)
 [a6:a40].Validation.Add 3, 1, 1, Join(mLista, ",")
 ElseIf .[g2] <> "" Then
 [a6:a40].Validation.Add 3, 1, 1, .[g2]
 End If
 .[g1].CurrentRegion.Delete
 ActiveCell.Offset(, 1).Activate: ActiveCell.Offset(, -1).Activate
End With
For Each Hoja In Worksheets
 Select Case Hoja.Name
 Case "Hoja3", "Hoja2", "Hoja1"
 Case Else
 Hoja.Protect Password:="xxx"
 Hoja.Visible = False
 End Select
 Next
Application.ScreenUpdating = True
End Sub

Cuando selecciono alguna celda de la hoja3 se me abre el desplegable, hasta ahi todo correcto, pero cuando selecciono algún valor de la lista, me da error en macro en la siguiente linea:

[a6:a40].Validation.Add 3, 1, 1, Join(mLista, ",")

como si no quisiera coger la validación otra vez al eliminar la celda G1.

El error que me sale es:

Se ha producido el error '1004' en tiempo de ejecución:

Error definido por la aplicación o el objeto.

Gracias.

Añade tu respuesta

Haz clic para o