Criar funções personalizadas no Excel

Embora o Excel inclua uma variedade de funções de planilha internas, é provável que você não tenha uma função para cada tipo de cálculo que executar. Os designers do Excel não poderiam possivelmente prever as necessidades de cálculo de cada usuário. Em vez disso, o Excel fornece a você a capacidade de criar funções personalizadas, que são explicadas neste artigo.

Você está procurando informações sobre como criar uma função personalizada JavaScript que você pode executar no Excel para Windows, Excel para Mac ou Excel Online ? Se você estiver, consulte o artigo visão geral das funções personalizadas do Excel.

Funções personalizadas, como macros, usam a linguagem de programação do Visual Basic for Applications (VBA) . Elas são diferentes das macros de duas maneiras importantes. Primeiro, eles usam procedimentos Function em vez de procedimentos sub . Ou seja, ele começa com uma instrução de função em vez de uma instrução sub e termina com End Function em vez de End Sub. Em segundo lugar, eles executam cálculos em vez de executar ações. Certos tipos de instruções, como instruções que selecionam e formatam intervalos, são excluídas das funções personalizadas. Neste artigo, você aprenderá a criar e usar funções personalizadas. Para criar funções e macros, você trabalha com o Editor do Visual Basic (VBE), que é aberto em uma nova janela separada do Excel.

Suponha que sua empresa ofereça um desconto de quantidade de 10% na venda de um produto, contanto que o pedido seja de mais de 100 unidades. Nos parágrafos a seguir, demonstraremos uma função para calcular esse desconto.

O exemplo a seguir mostra um formulário de pedido que lista cada item, quantidade, preço, desconto (se houver) e o preço estendido resultante.

Exemplo de formulário de pedido sem uma função personalizada

Para criar uma função de desconto personalizada nesta pasta de trabalho, siga estas etapas:

  1. Pressione ALT + F11 para abrir o editor do Visual Basic (no Mac, pressione FN + ALT + F11) e, em seguida, clique em Inserir > módulo. Uma nova janela de módulo aparece no lado direito do editor do Visual Basic.

  2. Copie e cole o código a seguir no novo módulo.

    Function DISCOUNT(quantity, price)
       If quantity >=100 Then
         DISCOUNT = quantity * price * 0.1
       Else
         DISCOUNT = 0
       End If
     
     DISCOUNT = Application.Round(Discount, 2)
    End Function
    

Observação: Para deixar seu código mais legível, você pode usar a tecla Tab para recuar linhas. O recuo é somente para seus benefícios e é opcional, pois o código será executado com ou sem ele. Depois de digitar uma linha recuada, o editor do Visual Basic pressupõe que sua próxima linha será recuada de maneira semelhante. Para mover-se para fora (ou seja, para a esquerda) um caractere de tabulação, pressione Shift + Tab.

Agora, você está pronto para usar a nova função de desconto. Feche o editor do Visual Basic, selecione a célula G7 e digite o seguinte:

= DESCONTO (D7, E7)

O Excel calcula o desconto de 10% nas unidades de 200 no $47.50 por unidade e retorna $950.

Na primeira linha do seu código VBA, desconto de função (quantidade, preço), você indicou que a função desconto requer dois argumentos, quantidade e preço. Ao chamar a função em uma célula de planilha, você deve incluir esses dois argumentos. Na fórmula = Discount (D7, E7), D7 é o argumento de quantidade e E7 é o argumento Price . Agora, você pode copiar a fórmula de desconto para G8: G13 para obter os resultados exibidos abaixo.

Vamos considerar como o Excel interpreta esse procedimento de função. Quando você pressiona Enter, o Excel procura o desconto de nome na pasta de trabalho atual e descobre que é uma função personalizada em um módulo VBA. Os nomes de argumentos entre parênteses, quantidade e preçosão espaços reservados para os valores nos quais o cálculo do desconto se baseia.

Exemplo de formulário de pedido com uma função personalizada

A instrução se no bloco de código a seguir examina o argumento de quantidade e determina se o número de itens vendidos é maior ou igual a 100:

If quantity >= 100 Then
 DISCOUNT = quantity * price * 0.1
Else
 DISCOUNT = 0
End If

Se o número de itens vendidos for maior ou igual a 100, o VBA executará a instrução a seguir, que multiplica o valor de quantidade pelo valor de preço e, em seguida, multiplica o resultado por 0,1:

Discount = quantity * price * 0.1

O resultado é armazenado como o descontovariável. Uma instrução VBA que armazena um valor em uma variável é chamada de instrução de atribuição , porque ela avalia a expressão no lado direito do sinal de igual e atribui o resultado ao nome da variável à esquerda. Como o desconto variável tem o mesmo nome que o procedimento Function, o valor armazenado na variável é retornado para a fórmula de planilha que chamou a função de desconto.

Se quantidade for menor do que 100, o VBA executará a seguinte instrução:

Discount = 0

Por fim, a instrução a seguir Arredonda o valor atribuído à variável de desconto para duas casas decimais:

Discount = Application.Round(Discount, 2)

O VBA não tem função ARREd, mas o Excel. Portanto, para usar arredondar nesta instrução, você diz ao VBA para procurar o método round (função) no objeto Application (Excel). Você faz isso adicionando o aplicativo Word antes da palavra arredondada. Use essa sintaxe sempre que precisar acessar uma função do Excel a partir de um módulo VBA.

Uma função personalizada deve começar com uma instrução Function e terminar com uma instrução End Function. Além do nome da função, a instrução function geralmente especifica um ou mais argumentos. No entanto, você pode criar uma função sem argumentos. O Excel inclui várias funções internas, RAND e agora, por exemplo, que não usam argumentos.

Após a instrução Function, um procedimento Function inclui uma ou mais instruções VBA que fazem decisões e executam cálculos usando os argumentos passados para a função. Por fim, em algum lugar do procedimento Function, você deve incluir uma instrução que atribui um valor a uma variável com o mesmo nome da função. Esse valor é retornado para a fórmula que chama a função.

O número de palavras-chave VBA que você pode usar em funções personalizadas é menor do que o número que você pode usar em macros. Funções personalizadas não podem fazer nada além de retornar um valor para uma fórmula em uma planilha ou para uma expressão usada em outra macro ou função VBA. Por exemplo, as funções personalizadas não podem redimensionar janelas, editar uma fórmula em uma célula ou alterar as opções de fonte, cor ou padrão do texto em uma célula. Se você incluir código "ação" desse tipo em um procedimento Function, a função retornará o #VALUE! erro.

A única ação que um procedimento Function pode fazer (além da realização de cálculos) é exibir uma caixa de diálogo. Você pode usar uma instrução CaixaDeEntrada em uma função personalizada como um meio de obter entrada do usuário que executa a função. Você pode usar uma instrução CaixaDeMensagem como um meio de transmitir informações para o usuário. Você também pode usar caixas de diálogo personalizadas ou UserForms, mas isso é um assunto além do escopo desta introdução.

Até mesmo macros simples e funções personalizadas podem ser difíceis de ler. Você pode facilitar a compreensão digitando um texto explicativo na forma de comentários. Adicione comentários precedendo o texto explicativo com um apóstrofo. Por exemplo, o exemplo a seguir mostra a função desconto com comentários. Adicionar comentários como esses torna mais fácil para você ou outras pessoas manter o código VBA enquanto o tempo passa. Se você precisar fazer uma alteração no código no futuro, terá um tempo mais fácil para entender o que você originalmente fez.

Exemplo de uma função VBA com comentários

Um apóstrofo faz com que o Excel Ignore tudo para a direita na mesma linha, para que você possa criar comentários nas linhas ou no lado direito das linhas que contêm o código VBA. Você pode começar um bloco de código relativamente longo com um comentário que explica sua finalidade geral e, em seguida, usar comentários embutidos para documentar demonstrativos individuais.

Outra maneira de documentar suas macros e funções personalizadas é dar a elas nomes descritivos. Por exemplo, em vez de nomear um rótulode macro, você pode nomeá-lo MonthLabels para descrever mais especificamente a finalidade que a macro serve. Usar nomes descritivos para macros e funções personalizadas é especialmente útil quando você criou muitos procedimentos, principalmente se você criar procedimentos semelhantes, mas não idênticos.

A maneira como você documenta suas macros e funções personalizadas é uma questão de preferência pessoal. O que é importante é adotar algum método de documentação e usá-lo consistentemente.

Para usar uma função personalizada, a pasta de trabalho que contém o módulo em que você criou a função deve estar aberta. Se essa pasta de trabalho não estiver aberta, você receberá um #NAME? erro ao tentar usar a função. Se você faz referência à função em uma pasta de trabalho diferente, deve preceder o nome da função com o nome da pasta de trabalho na qual a função reside. Por exemplo, se você criar uma função chamada Discount em uma pasta de trabalho chamada Personal. xlsb e chamar essa função em outra pasta de trabalho, você deve digitar = pessoal de desconto (), não simplesmente = desconto ().

Você pode economizar alguns pressionamentos de teclas (e possíveis erros de digitação) selecionando suas funções personalizadas na caixa de diálogo Inserir função. Suas funções personalizadas aparecem na categoria definido pelo usuário:

caixa de diálogo Inserir Função

Uma maneira mais fácil de disponibilizar suas funções personalizadas a qualquer momento é armazená-las em uma pasta de trabalho separada e, em seguida, salvar essa pasta de trabalho como um suplemento. Em seguida, você pode disponibilizar o suplemento sempre que executar o Excel. Veja como fazer isto:

  1. Depois de criar as funções necessárias, clique em arquivo > salvar como.

    No Excel 2007, clique no botão do Microsoft Officee clique em salvar como

  2. Na caixa de diálogo salvar como , abra a lista suspensa salvar como tipo e selecione suplemento do Excel. Salve a pasta de trabalho em um nome reconhecível, como MyFunctions, na pasta AddIns. A caixa de diálogo salvar como irá propor essa pasta, portanto, basta aceitar o local padrão.

  3. Depois de salvar a pasta de trabalho, clique em arquivo > Opções do Excel.

    No Excel 2007, clique no botão do Microsoft Officee clique em Opções do Excel.

  4. Na caixa de diálogo Opções do Excel , clique na categoria suplementos .

  5. Na lista suspensa gerenciar , selecione suplementos do Excel. Em seguida, clique no botão ir .

  6. Na caixa de diálogo suplementos , marque a caixa de seleção ao lado do nome usado para salvar a pasta de trabalho, como mostrado abaixo.

    caixa de diálogo Suplementos

  1. Depois de criar as funções necessárias, clique em arquivo > salvar como.

  2. Na caixa de diálogo salvar como , abra a lista suspensa salvar como tipo e selecione suplemento do Excel. Salve a pasta de trabalho em um nome reconhecível, como MyFunctions.

  3. Depois de salvar a pasta de trabalho, clique em ferramentas > suplementos do Excel.

  4. Na caixa de diálogo suplementos , selecione o botão procurar para localizar o suplemento, clique em abrire marque a caixa ao lado de seu suplemento na caixa suplementos disponíveis .

Depois de seguir essas etapas, suas funções personalizadas estarão disponíveis toda vez que você executar o Excel. Se você quiser adicionar à sua biblioteca de funções, retorne ao editor do Visual Basic. Se você examinar o explorador do projeto do editor do Visual Basic em um título do VBAProject, verá um módulo chamado após o arquivo do suplemento. Seu suplemento terá a extensão. xlam.

módulo nomeado no vbe

Clicar duas vezes nesse módulo no Project Explorer faz com que o editor do Visual Basic exiba o código de função. Para adicionar uma nova função, posicione o ponto de inserção após a instrução End Function que termine a última função na janela de código e comece a digitar. Você pode criar quantas funções forem necessárias dessa maneira, e elas estarão sempre disponíveis na categoria definido pelo usuário na caixa de diálogo Inserir função .

Esse conteúdo foi criado originalmente por Mark subexposição e Craig Stinson como parte do livro Microsoft Office Excel 2007 Inside Out. Ele já foi atualizado para ser aplicado às versões mais recentes do Excel.

Precisa de mais ajuda?

Você pode sempre consultar um especialista na Excel Tech Community, obter suporte na Comunidade de respostas ou sugerir um novo recurso ou melhoria no User Voice do Excel.

Observação:  Esta página foi traduzida automaticamente e pode apresentar erros gramaticais ou imprecisões. Nosso objetivo é que este conteúdo seja útil para você. Você pode nos dizer se as informações foram úteis? Use o artigo em inglês como referência.​

Expanda suas habilidades no Office
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Office Insider

Essas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×