Boa tarde, Alexandre!
Baseado no texto que você recomendou, observei que estava cometendo um erro na ordem de execução da error trap. Percebi que deveria fazer:
'[...]
ElseIf i <= 2 Then
On Error Resume Next
CZERNYax = Application.WorksheetFunction.VLookup(i, Workbooks("Tabelas de Czerny.xlsx").Worksheets("Tipo 2A").Range("A8:B28"), 2, 0)
If Err.Number <> 0 Then
CZERNYax = 0
End If
End If
'[...]
A princípio eu estava fazendo:
'[...]
ElseIf i <= 2 Then
CZERNYax = Application.WorksheetFunction.VLookup(i, Workbooks("Tabelas de Czerny.xlsx").Worksheets("Tipo 2A").Range("A8:B28"), 2, 0)
On Error Resume Next
If Err.Number <> 0 Then
CZERNYax = 0
End If
End If
'[...]
Como é possível ver, o erro estava em colocar "On Error Resume Next" depois do valor de "CZERNYax". Pessoalmente, não consigo entender muito bem porque daria errado da primeira maneira. Talvez esteja relacionado à lógica do procedimento "On Error" no VBA. Em todo caso, funcionou.
Agradeço pela ajuda!
Postado : 18/04/2014 2:54 pm