Utilizo o códio abaixo é muito bom para identificar a linha que está dando o erro, qualquer dúvidas me retorna via e-mail.
'Declare no Option Explicit
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
ByVal Hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10
'******************************
On Error GoTo ErroLocal
Dim lngX As Long
'Aqui vai o seu código, mas enumere todas as linha no início
'1
'2 mas sem as aspas
Exit Sub
ErroLocal:
MsgBox "Erro número #" & Str$(Err.Number) & " na linha " & Str$(Erl) & " - " _
& Err.Description & " - gerado por " & Err.Source