PROCV no VBA: Como Fazer?

Quer aprender a usar a função PROCV no VBA? Então você está no lugar certo!

Se você já usa o Excel algum tempo, então já deve ter notado que a função PROCV é uma das funções mais usadas entre os usuários. Mas você sabia que também é possível usá-la através do VBA?

No VBA, a funcionalidade desta função é semelhante ao tradicional uso em planilhas e como se trata de uma função nativa do Excel, é necessário usar o método Application.WorksheetFunction junto com os argumentos já conhecidos desta função.

Se interessou pelo assunto? Então confira os detalhes a seguir e veja como usar esta função no VBA para automatizar ainda mais seu trabalho.

Função PROCV no VBA

Como você já deve saber, a função PROCV no Excel é usada para pesquisar um valor em uma matriz e retornar seu valor correspondente de outra coluna. O valor a ser pesquisado deve estar presente na primeira coluna. Também é necessário mencionar se deve procurar uma correspondência exata ou uma correspondência aproximada.

A função PROCV no Excel tem a seguinte sintaxe:

PROCV(valor_procurado;matriz_tabela;núm_índice_coluna;procurar_intervalo) 

Onde:

  • valor_procurado:É o valor que você deseja pesquisar;
  • matriz_tabela: É o intervalo de células onde você deseja encontrar o valor procurado;
  • núm_índice_coluna:É o número da coluna onde está o valor a ser encontrado.
  • procurar_intervalo:Aqui você escolhe se você quer encontrar exatamente o que você está buscando ou se algo aproximado atende a sua necessidade caso não encontre exatamente o que está buscando. Escolha 0/FALSO para obter a correspondência exara ou 1/VERDADEIRO para retornar a correspondência aproximada.

No código VBA, a função PROCV deve ser usada como:

Application.WorksheetFunction.vlookup(lookup_value, table_array, col_index_num, range_lookup)

Como usar a função PROCV no VBA?

Para que você possa compreender na prática como usar a função PROCV no VBA, confira abaixo alguns exemplos:

Exemplo 1: PROCV no VBA com resultado em MsgBox

Neste primeiro exemplo, suponha que você tenha uma tabela com o ID , Nome e Nota de cada aluno de uma classe.

Como fazer procv no VBA

Neste caso, você deseja pesquisar as notas obtidas pelo um aluno com ID 987. Para pesquisar o valor, siga as seguintes etapas abaixo:




1. Acesse a guia Desenvolvedor > Visual Basic (Se preferir, use o atalho Alt + F11)

icone visual basic no Excel

Caso não tenha a guia Desenvolvedor habilitada em seu Excel, confira aqui como habilitá-la.

2. Na janela do VBA, acesse a guia Inserir e clique em Módulo.

Inserir módulo no VBA

3. Agora, insira a função PROCV. O código a seguir pode ser usado (adapte-o conforme a sua necessidade).

Sub PROCV_Ex1()
Dim aluno_id As Long
Dim nota As Long
aluno_id = 987
Set intervalo = Range("A2:C7")
nota = Application.WorksheetFunction.VLookup(aluno_id, intervalo, 3, False)
End Sub
  • Em primeiro lugar, definimos uma variável id de aluno, que é o valor a ser pesquisado. Por isso, definimos:

aluno_id = 987

  • Em seguida, definimos o intervalo para o argumento matriz_tabela. Como nossos dados estão presentes nas células B2:C7, definimos um intervalo como:

Set intervalo = Range(“B2:C7”)

  • Por fim, inserimos a função PROCV (deve ser inserida em Inglês) usando Worksheet function em uma variável nota:

nota = Application.WorksheetFunction.Vlookup(aluno_id, intervalo, 3, False)

  • Para mostrar o resultado da função PROCV, usaremos uma caixa de mensagem com o seguinte comando:

MsgBox “O aluno com ID:” & aluno_id & ” obteve a nota” & nota & “

Ele retornará: O aluno com ID:987 obteve a nota 8




Agora, clique no botão executar na Janela do VBA.

Você notará que uma caixa de mensagem aparecerá na planilha do Excel.

PROCV no VBA com resultado em MsgBox

Exemplo 2: PROCV no Excel com resultado na célula

Neste segundo exemplo, suponha que você tenha os dados sobre os nomes dos funcionários e seus salários. Esses dados são fornecidos nas colunas A e B. Agora, você precisa usar a função PROCV no VBA de modo que, dado o nome do funcionário em uma célula, E2, o salário do funcionário seja retornado na célula 0 F2.

vba procv

Para criar a função PROCV no VBA neste caso, basta seguir as etapas:

1. Defina o intervalo em que os valores estão presentes, ou seja, colunas A e B.
Set intervalo = Range (“A:B”)

2. Defina o nome do funcionário e insira o nome da célula F2.
Set funcionário = Range (“E2”)

3. Defina o salário como célula F2.
Set salário = Range (“F2”)

4. Agora, chame a função PROCV usando Worksheet Function no VBA e insira-a na variável salário.value. Isso retornará o valor (saída da função Vlookup) na célula F2. A seguinte sintaxe pode ser usada:

salário.Value = Application.WorksheetFunction.VLookup(funcionário, intervalo, 2, False)

exemplo de procv no VBA

5. Agora, execute o módulo e observe que célula F2 será preenchida com o salário do funcionário após a execução do código VBA.

procv automático

Observação: Caso precise alterar o valor da célula F2, será necessário executar novamente o código para obter o novo resultado da função PROCV.


Exemplo 3: PROCV no VBA com dois critérios

Neste terceiro exemplo, suponha que você tenha os dados do funcionário de sua empresa, tendo sua Matrícula, Nome, Departamento e Salário. Usando a função PROCV no VBA, você deseja obter os detalhes do salário de um funcionário usando seu nome e departamento.

PROCV no VBA com dois critérios

Como a função PROCV pesquisa o valor_procurado em apenas uma única coluna, que é a primeira coluna da matriz_tabela, é necessário que você primeiro faça uma coluna auxiliar contendo o “Nome” e o “Departamento” de cada funcionário. Veja o exemplo abaixo:

PROCV com dois critérios

Vamos agora escrever o código, de modo que a coluna A contenha os valores da coluna C (nome) e da coluna D (departamento).

1. Defina três variáveis nome, departamento e valor_procurado como uma string. Defina uma variável chamada salário como Long.

2. Utilize uma caixa de entrada (Inputbox) para capturar o nome do funcionário

funcionário = InputBox(“Insira o nome do funcionário”)

3. Utilize uma caixa de entrada (Inputbox) para capturar o departamento

departamento = InputBox(“Insira o departamento”)

4. Atribua o Funcionário e o Departamento com “_” como separador para a variável valor_procurado usando a seguinte sintaxe:

valor_procurado = funcionário & “_” & departamento

5. Escreva da função PROCV para procurar o valor_procurado no intervalo A2:E20 e o retornar o resultado na variável salário.

salário = Application.WorksheetFunction.VLookup(valor_procurado, Range(“A:E”), 5, False)

6. Para exibir o salário em uma caixa de mensagem, use a sintaxe:

MsgBox “O salário do funcionário é R$” & salário

exemplo de código vba

Ao executar o código, observe que o VBA exibirá uma caixa de entrada para você inserir o nome do funcionário.

procv com inputbox

Em seguida, outra caixa de entrada para inserir o departamento.

Ao preencher ambos os campos, o Excel retornará o salário do funcionário em uma caixa de mensagem. Veja o exemplo abaixo:




Importante:

Se a função PROCV não encontrar algum funcionário com o nome e departamento, então o VBA retornará um erro.

Suponha que você esteja pesquisando pela funcionária “Vanessa” e o departamento “TI”, ele retornará o erro de tempo de execução ‘1004’, pois não conseguirá encontrar o valor_procurando na lista.

procv erro de tempo de execução '1004'

Para resolver esse problema, você pode especificar no código que, nesse tipo de erro, retorne a mensagem “Valor não encontrado”. Para fazer isso, basta seguir as etapas:

1. Antes de usar a sintaxe vlookup, use o seguinte código-

On Error GoTo Mensagem
Check:

O código de rastreamento (de Check:) será monitorado e, se receber um erro, irá para a instrução “Mensagem”.

No final do código (Antes de End Sub), especifique que se ocorrer o erro de tempo de execução ‘1004’, em seguida, deve ser mostrada a caixa de mensagem “Dados do funcionário não presentes”. Isso pode ser feito usando a sintaxe:

Mensagem:
If Err.Number = 1004 Then
MsgBox ("Dados do funcionário não presentes")
End If




Detalhes para se lembrar:

  • A função PROCV no VBA pode ser chamada no Excel usando o objeto WorksheetFunction.
  • A sintaxe da função PROCV permanece a mesma no Excel VBA. Apenas é necessário usar a função em Inglês em vez de Português. Este erro pode ser gerenciado usando uma instrução GoTo se retornar um erro.

Baixe aqui a planilha com os exemplos apresentados neste tutorial.

Confira também as seguintes dicas de Excel VBA:

E então,  o que achou da dica para usar a função PROCV no VBA? Caso tenha ficado com alguma dúvida, basta deixar o seu comentário abaixo.