Blog

Postado em em 11 de junho de 2022

PROCX Sem o Microsoft 365 – Como Usar em Qualquer Versão do Excel?

Já imaginou utilizar a função PROCX sem o Microsoft 365, ou qualquer outra função sem ter a versão mais atual do Excel?

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

PROCX Sem o Microsoft 365

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, Impressionadores! Você sabia que é possível criar qualquer função no VBA? Isso mesmo, você consegue criar qualquer função do Excel dentro do VBA.

E na aula de hoje eu quero te mostrar como criar função PROCX no VBA mesmo que você não tenha a versão mais recente do Excel.

Dessa forma você vai poder utilizar o PROCX sem o Office 365 com a criação das funções personalizadas.

Como o VBA é uma linguagem de programação você vai conseguir fazer a criação de funções no VBA para utilizar no Excel e facilitar a sua vida.

Claro que você pode criar outras funções além do PROCX, pode criar suas próprias funções para facilitar o seu trabalho, mas a ideia hoje é te mostrar como criar a função PROCX no VBA.

Essa função é uma evolução da função PROCV, então a busca dela não vai ter a restrição que tínhamos no PROCV.

E aí, vamos a criação de funções no VBA utilizando estrutura de repetição for, estrutura condicional if e muito mais!

Inserindo um Módulo no VBA

Para criar um código dentro de um módulo, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11.

Como não temos nenhum módulo destinado ao tema da aula de hoje, e por questão de organização, vamos criar um módulo à parte.

Vamos na guia Inserir > Módulo, e uma caixa branca se abrirá.

0 3

Por padrão ele terá o nome de “Módulo 1”.

Colocaremos a seguinte Function dentro dele:

Function meuPROCXAula(valorProcurado As Variant, intervaloPesquisa As Range, intervaloResultado As Range, Optional seNaoEncontrado As Variant, Optional ordemPesquisa As Integer)

 

If intervaloPesquisa.Count <> intervaloResultado.Count Then

    meuPROCXAula = "Os intervalos possuem tamanhos diferentes"

    Exit Function

End If

 

If ordemPesquisa = 1 Or ordemPesquisa = 0 Then

    ini = 1

    fim = intervaloPesquisa.Count

    passo = 1

Else

    ini = intervaloPesquisa.Count

    fim = 1

    passo = -1

End If

 

For i = ini To fim Step passo

    If intervaloPesquisa(i) = valorProcurado Then

        meuPROCXAula = intervaloResultado(i)

        Exit Function

    End If

Next

 

If IsMissing(seNaoEncontrado) Then

    meuPROCXAula = "Não encontrou o valor procurado"

Else

    meuPROCXAula = seNaoEncontrado

End If

 

End Function

Explicação do código:

  • Utilizar uma Function declarada como meuPROCXAula, cujos argumentos serão:
  • Utilizaremos uma estrutura de comparação If para verificar os tamanhos dos intervalos representados por intervaloPesquisa e IntervaloResultado. Se eles forem diferentes:
    • Armazenar como resultado da função o texto “Os intervalos possuem tamanhos diferentes”
    • Abortar o código utilizando a instrução de saída para cancelar a function
  • Os intervalos intervaloPesquisa e IntervaloResultado sendo iguais, o código seguirá normalmente
  • Utilizaremos uma estrutura de comparação If para verificar se a variável ordemPesquisa assumirá os valores 0 ou 1. Caso isso aconteça, teremos as seguintes consequências:
    • Armazenar na variável “ini” o valor 1
    • Armazenar na variável “fim” o valor da contagem de valores presentes no intervaloPesquisa
    • Armazenar na variável “passo” o valor 1
  • Caso o valor da variável “odemPesquisa” não seja 0 ou 1, teremos as seguintes consequências:
    • Armazenar na variável “ini” o valor da contagem de valores presentes no intervaloPesquisa
    • Armazenar na variável “fim” o valor 1
    • Armazenar na variável “passo” o valor -1
  • Utilizar uma estrutura de repetição do tipo For que vai considerar do valor dado pela variável “ini”, até o valor representado pela variável “fim”, que vai fazer as seguintes ações, realizando as voltas (Step) da estrutura de repetição (pulando unidades) de acordo com o valor da variável “passo”:
    • Comparar, através de uma função If:
      • Se o intervaloPesquisa de número “i” for igual ao valor da variável “valorProcurado”:
        • Armazenar como resultado da função o intervaloPesquisa de número “i”
        • Já tendo a resposta para a function, abortar o código utilizando a instrução de saída para cancelar o resto da function
      • Comparar, através de outra função If se o argumento opcional “seNaoEncontrado” está vazio (não preenchido) na função:
        • Caso esteja vazio, a resposta da função dada será, por padrão, “Não encontrou o valor procurado”
        • Caso esteja preenchido com alguma resposta esperada, a resposta da função será justamente a resposta esperada/configurada pelo usuário no argumento opcional “seNaoEncontrado”
      • Se encerra o código

Exemplo de uso da Function

Podemos, agora, invocar essa Function dentro do Excel, como uma função, mas agora de forma personalizada.

Observe abaixo agora a utilização da Function:

PROCX Sem o Microsoft 365

Conclusão – PROCX Sem o Microsoft 365

Nessa aula você lidou com:

Até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA toda semana! Um abraço!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Quer sair do zero no Power BI e virar uma referência na sua empresa? Inscreva-se agora mesmo no Power BI Impressionador