Este tutorial explicará como criar funções definidas pelo usuário no VBA.
O VBA é composto de Sub Procedimentos e Procedimentos de Função. Os procedimentos de função retornam um valor e podem ser chamados por Subprocedimentos, ou podem ser usados na planilha do Excel, onde o valor que a função produz é retornado para a planilha do Excel. O Excel, é claro, tem uma variedade de funções embutidas - como a Função Soma ou Função If. Os procedimentos de função que você escreve em VBA são usados de maneira semelhante à função interna e são conhecidos como Funções Definidas pelo Usuário (UDFs).
Por que criar um UDF?
Função necessária ausente
Um dos principais motivos para querer criar uma UDF no Excel é que não existe uma função integrada existente que fará a tarefa para você. Escrever sua própria função em VBA geralmente é a maneira mais eficiente de resolver o problema. A função abaixo irá converter um valor de quilogramas para libras onde um parâmetro variável (dblKilo) está sendo usado para obter o valor dos quilogramas para fazer o cálculo.
Substituir uma sub-rotina (macro)
Você poderia escrever um subprocedimento (macro) para resolver a tarefa para você - mas os subprocedimentos não retornam um valor e eles não são dinâmicos - em outras palavras, se os valores em sua planilha forem alterados, você precisará executar novamente o macro para que os cálculos na macro atualizem seus dados. O subprocedimento abaixo também converteria nossos quilos em libras, mas sempre que os dados mudassem em A1, você precisaria executar novamente a macro para atualizar o resultado.
Substitua uma Fórmula
Você pode ter uma fórmula realmente complicada no Excel que precisa ser usada repetidamente - colocar a fórmula no código VBA torna mais fácil de ler e entender - e também remover espaço para erros do usuário ao digitar a fórmula.
Criação de UDFs
Para criar uma UDF, primeiro adicione um módulo à pasta de trabalho do Excel ou, se tiver uma pasta de trabalho Macro pessoal, pode usar um módulo existente ou adicionar um novo. Para fazer isso, você precisa estar no Editor do Visual Basic (VBE). Para chegar ao VBE, pressione ALT + F11 ou clique na opção Visual Basic na guia Desenvolvedor de sua faixa de opções.
GORJETA: Se você não tiver a guia Desenvolvedor ativada em sua faixa de opções, vá para Arquivo, Opções e clique em Personalizar fita. Certifique-se de que a caixa de seleção Desenvolvedor esteja marcada e clique em OK.
Para inserir um novo módulo, selecione o Projeto VBA no qual deseja inserir o módulo (seja o Projeto VBA para o livro atual em que você está trabalhando ou a Pasta de trabalho macro pessoal), clique no botão Inserir Menu e clique em Módulo
Depois de criar seu módulo, você pode começar a criar seu UDF.
Todas as UDFs começam com Função e, em seguida, o nome da UDF. As funções podem ser privadas ou públicas, mas normalmente você deseja que uma UDF seja pública para que apareça na caixa de diálogo Inserir Função no Excel (consulte como usar uma função de uma planilha do Excel mais adiante neste artigo). Se você não colocar a palavra-chave Private antes da função, a função será automaticamente pública.
123 | Função TestFunction1 (intA As Integer) As IntegerTestFunction1 = intA * 7Função Final |
A função acima possui um único argumento (intA). Você pode criar uma função com vários argumentos
123 | Função TestFunction2 (intA As Integer, intB As Integer, intC As Integer) As IntegerFunçãoTeste2 = (intA * intB) + intCFunção Final |
Você também pode criar uma função com argumentos opcionais. Se o argumento for omitido, você pode definir um valor padrão para o argumento na função.
123 | Função TestFunction3 (intA As Integer, intB As Integer, Opcional intC As Integer = 10) As IntegerFunçãoTeste3 = (intA * intB) + intCFunção Final |
Usando uma função de dentro de uma planilha do Excel
As funções que você criou aparecerão por padrão na sua lista de funções na seção Definida pelo Usuário da lista de funções.
Clique no fx para mostrar a caixa de diálogo Inserir Função.
Selecione Usuário definido da lista de categorias
Selecione a função que você deseja a partir do disponível Funções definidas pelo usuário.
Como alternativa, quando você começa a escrever sua função no Excel, a função deve aparecer na lista suspensa de funções.
Salvando as funções com seu arquivo Excel
Como as funções são escritas em código VBA, é lógico que o código precisa estar disponível para a pasta de trabalho a fim de estar disponível para ser usado na planilha do Excel. Você pode salvar suas funções na pasta de trabalho em que as está usando ou pode salvá-las na pasta de trabalho Macro pessoal. Sua pasta de trabalho Macro pessoal é um arquivo oculto que está disponível sempre que o Excel é aberto e, portanto, disponível para qualquer pasta de trabalho no Excel usar. Normalmente é criado quando você grava uma macro e seleciona a opção para armazenar a macro na pasta de trabalho macro pessoal.
Se desejar manter suas funções salvas dentro da pasta de trabalho em que está trabalhando, você precisará ter certeza de que, ao salvar a pasta de trabalho, ela será salva como um ‘Pasta de trabalho habilitada para macro'Ou um xlsm Arquivo.