Índice:
Vídeo: Curso de VBA - Aula 9 - Procedimentos Sub e Function 2025
Na programação do VBA, uma função retorna um valor. Você pode executar procedimentos de função e chamar a função no Excel 2016. Funções, ao contrário dos procedimentos Sub, podem ser executadas de duas maneiras:
-
Ao chamar a função de outro procedimento Sub ou Procedimento de função
-
Usando a função em um fórmula da planilha
Experimente esta função simples. Digite-o em um módulo VBA:
Função CubeRoot (número) CubeRoot = número ^ (1/3) Função final
Esta função é bastante reduzida; ele simplesmente calcula a raiz do cubo do número passado para ele como seu argumento. No entanto, fornece um ponto de partida para a compreensão das funções. Ele também ilustra um conceito importante sobre as funções: como retornar o valor. (Você lembra que uma função retorna um valor, certo?)
Observe que a única linha de código que compõe este procedimento da função executa um cálculo. O resultado da matemática (número para o poder de 1/3) é atribuído à variável CubeRoot. Não por coincidência, o CubeRoot também é o nome da função. Para indicar à função qual valor retornar, atribua esse valor ao nome da função.
Chamando a função de um procedimento Sub
Como você não pode executar uma função diretamente, você deve chamá-la de outro procedimento. Digite o seguinte procedimento simples no mesmo módulo VBA que contém a função CubeRoot:
Sub CallerSub () Ans = CubeRoot (125) MsgBox Ans End Sub
Quando você executa o procedimento CallerSub, o Excel exibe uma caixa de mensagem que contém o valor da variável Ans, que é 5.
Aqui está o que está acontecendo: a função CubeRoot é executada e recebe um argumento de 125. O cálculo é executado pelo código da função (usando o valor passado como argumento) e o valor retornado da função é atribuído ao Variável de resposta A função MsgBox exibe o valor da variável Ans.
Tente alterar o argumento que é passado para a função CubeRoot e executar novamente a macro CallerSub. Funciona exatamente como deveria - supondo que você atribua à função um argumento válido (um número positivo).
Por sinal, o procedimento CallerSub pode ser simplificado um pouco. A variável Ans não é realmente necessária, a menos que seu código use essa variável mais tarde. Você pode usar essa instrução única para obter o mesmo resultado:
MsgBox CubeRoot (125)
Chamando uma função de uma fórmula da planilha
Agora é hora de chamar esse procedimento de função VBA a partir de uma fórmula de planilha.Ative uma planilha na mesma pasta de trabalho que contém a definição da função CubeRoot. Em seguida, digite a seguinte fórmula em qualquer célula:
= CubeRoot (1728)
A célula exibe 12, que é de fato a raiz do cubo de 1, 728.
Como você pode esperar, você pode usar uma referência de célula como o argumento para a função CubeRoot. Por exemplo, se a célula A1 contiver um valor, você pode inserir = CubeRoot (A1) . Nesse caso, a função retorna o número obtido calculando a raiz do cubo do valor em A1.
Você pode usar esta função qualquer número de vezes na planilha. Como as funções incorporadas do Excel, suas funções personalizadas aparecem na caixa de diálogo Inserir Função. Clique no botão Inserir Função da barra de ferramentas e escolha a categoria Definida pelo Usuário. A caixa de diálogo Inserir função lista sua própria função.
Se desejar que a caixa de diálogo Inserir Função exiba uma descrição da função, siga estas etapas:
-
Escolha Desenvolvedor → Código → Macros.
Excel exibe a caixa de diálogo Macro, mas CubeRoot não aparece na lista. (CubeRoot é um procedimento de função, e esta lista mostra apenas os procedimentos Sub.) Não se preocupe.
-
Digite a palavra CubeRoot na caixa Nome da macro.
-
Clique no botão Opções.
-
Digite uma descrição da função na caixa Descrição.
-
Clique em OK para fechar a caixa de diálogo Opções de macro.
-
Feche a caixa de diálogo Macro clicando no botão Cancelar.
Este texto descritivo agora aparece na caixa de diálogo Inserir Função.
Verifique a função CubeRoot que está sendo usada nas fórmulas da planilha.
