Notifications
Clear all

VBA VLOOKUP - problema

2 Posts
2 Usuários
0 Reactions
1,227 Visualizações
(@renatoddd)
Posts: 70
Trusted Member
Topic starter
 

Bom dia.

Me ajudem por favor.

preciso preenche uma coluna inteira, usando VLOOKUP, enquanto houver dados na coluna D.
criei a rotina abaixo mas tenho dois problemas:
1 - Quando o VLOOKUP não encontra o valor procurado, quero que ele preencha a célula com "Não existe" e isto esta dando erro.
2 - Quando o VLOOKUP da erro, ele sai da rotina e encerra o processamento. Preciso que ele siga executando para as linhas seguintes.

Código que eu criei.

Sub RENOMEAR_EMPRESAS()

Sheets("CÁLCULO").Select
Range("W3:W5000").ClearContents
Range("W3").Select

Do While Range("D" & ActiveCell.Row).Value <> ""

On Error GoTo TRATA_ERRO

    ActiveCell.Value = Application.WorksheetFunction.VLookup(Range("e" & ActiveCell.Row).Value, Sheets("EMPRESAS").Range("A1:B50"), 2, 0)
    ActiveCell.Offset(1, 0).Select
    
Loop

Exit Sub
TRATA_ERRO:
    Activell.Value = "Não existe"
    ActiveCell.Offset(1, 0).Select

End Sub
 
Postado : 01/10/2019 7:12 am
Reinaldo
(@rlm)
Posts: 246
Estimable Member
 

Não testei, por razões obvias, mas aparentemente ao ocorrer o erro a rotina e desviada/transferida para o trecho ++>"TRATA_ERRO:<++
Tratado esse erro a rotina vai para "End Sub" (o que ocorre logo apos trata_erro).
Experimente Alterar o local do "DESVIO"

Sub RENOMEAR_EMPRESAS()
Sheets("CÁLCULO").Select
Range("W3:W5000").ClearContents
Range("W3").Select

TRATA_ERRO:
    Activell.Value = "Não existe"
    ActiveCell.Offset(1, 0).Select

Do While Range("D" & ActiveCell.Row).Value <> ""
    On Error GoTo TRATA_ERRO
    ActiveCell.Value = Application.WorksheetFunction.VLookup(Range("e" & ActiveCell.Row).Value, Sheets("EMPRESAS").Range("A1:B50"), 2, 0)
    ActiveCell.Offset(1, 0).Select
Loop
End Sub

Reinaldo

 
Postado : 01/10/2019 7:53 am