Criar Funções no Excel com VBA Excel

Criar funções personalizadas no Excel com VBA

Neste artigo você aprenderá como criar funções no Excel com VBA. Este recurso é muito interessante funções que não existem no Excel.

O que são Funções no Excel?

No Excel nós temos centenas de funções que permitem resolver diferentes problemas. E com a união das funções nós podemos criar fórmulas complexas que resolvem ainda outros tipos de problema, criando assim uma infinidade de possibilidades.

Porém tem situações que não conseguem ser resolvidas diretamente pelo Excel, pois não há funções Excel que tenham determinadas funcionalidades.

Neste sentido, podem ser criadas novas funções no Excel utilizando Lambda ou VBA como veremos neste artigo.

Como Criar Funções VBA no Excel

Para criar funções no VBA a primeira necessidade é habilitar a guia desenvolvedor. Para tanto, siga este artigo Como Habilitar Guia Desenvolvedor.

Após isso clique no botão Inserir->Módulo é nele que iremos inserir as nossas funções VBA.

Veja aqui 10 exemplos de funções VBA feitas em Excel.

1. Função para Contar Caracteres Específicos em uma Célula

Esta função conta quantos caracteres específicos há em uma determinada célula.

Function ContaCaracter(texto As String, caractere As String) As Integer
    ContaCaracter = Len(texto) - Len(Replace(texto, caractere, ""))
End Function

Com isso a função já está pronta para ser utilizada no Excel.

Para a utilizar apenas digite em uma célula a chamada da função: =ContaCaracter(A1; “a”), neste caso contando a letra a na célula A1.

2. Função para Somar Números em um Texto

Esta função permite a extrair números em textos de uma célula e realizar a soma dos valores.

Function SomaNumerosTexto(texto As String) As Double
    Dim i As Integer
    Dim num As String
    Dim total As Double
    
    For i = 1 To Len(texto)
        If IsNumeric(Mid(texto, i, 1)) Then
            num = num & Mid(texto, i, 1)
        Else
            If num <> "" Then
                total = total + CDbl(num)
                num = ""
            End If
        End If
    Next i
    
    If num <> "" Then
        total = total + CDbl(num)
    End If
    
    SomaNumerosTexto = total
End Function

Um exemplo da aplicação seria em um texto na célula A1 que tenhamos “50 laranjas e 30 tangerinas” e para realizar a soma usamos =SomaNumerosTexto(A1).

Com isso temos os valores somados de 50 e 30, totalizando 80.

3. Função para Contar Palavras no Excel

Esta função realiza a contagem de palavras em células ou texto diretamente inserido na função.

Function ContaPalavras(texto As String) As Integer
    ContaPalavras = Len(Trim(texto)) - Len(Replace(Trim(texto), " ", "")) + 1
End Function

Para aplicar o código acima basta selecionar uma célula que tenha palavras para serem contadas, chamando ela desta forma =ContaPalavras(A1).

4. Função para Encontrar a Última Ocorrência de um Valor no Excel

Esta função encontra a última ocorrência de um valor em uma determinada coluna ou linha.

Function UltimaOcorrencia(valor As Variant, rng As Range) As Long
    Dim cel As Range
    For Each cel In rng
        If cel.Value = valor Then
            UltimaOcorrencia = cel.Row
        End If
    Next cel
End Function

5. Função para Verificar Data Vencida

Esta função permite verificar se uma determinada data em uma célula está vencida.

Function VerificarVencimento(data As Date) As String
    If data < Date Then
        VerificarVencimento = "Vencida"
    Else
        VerificarVencimento = "Dentro do Prazo"
    End If
End Function

Para aplicar a função basta digitar =VerificarVencimento(A1), sendo A1 um campo com data.

6. Função para Retornar a Data e Hora Atual com Fuso Horário Personalizado

Esta função permite retornar a data e hora atual em um determinado local, para isso deve passar o valor de ajuste na célula.

Function HoraLocal(offset As Double) As Date
    HoraLocal = Now + (offset / 24)
End Function

7. Função para Remover Caracteres Especiais de uma String

Esta função limpa o texto de caracteres especiais no Excel.

Function LimparTexto(texto As String) As String
    Dim chars As String
    chars = "!@#$%^&*()_+=<>?/|\"
    Dim i As Integer
    For i = 1 To Len(chars)
        texto = Replace(texto, Mid(chars, i, 1), "")
    Next i
    LimparTexto = texto
End Function

8. Função para Retornar a Data Mais Recente de um Intervalo

Esta função procura a maior data em um intervalo de células no Excel.

Function DataMaisRecente(rng As Range) As Date
    DataMaisRecente = Application.WorksheetFunction.Max(rng)
End Function

9. Função para Calcular a Média Ponderada Excel

Esta função calcula a média ponderada de um conjunto de números no qual pode fornecedor pesos diferentes para cada valor.

Function MediaPonderada(valores As Range, pesos As Range) As Double
    Dim somaValores As Double
    Dim somaPesos As Double
    Dim i As Integer
    
    ' Verifica se o número de valores e pesos é o mesmo
    If valores.Count <> pesos.Count Then
        MediaPonderada = CVErr(xlErrValue) ' Retorna erro se o tamanho for diferente
        Exit Function
    End If
    
    ' Calcula a soma dos valores ponderados e a soma dos pesos
    For i = 1 To valores.Count
        somaValores = somaValores + valores(i) * pesos(i)
        somaPesos = somaPesos + pesos(i)
    Next i
    
    ' Verifica se a soma dos pesos é diferente de zero
    If somaPesos = 0 Then
        MediaPonderada = CVErr(xlErrDiv0) ' Retorna erro de divisão por zero
    Else
        MediaPonderada = somaValores / somaPesos
    End If
End Function

Como exemplo digamos que temos nas células A1 à A3 os valores 80, 90 e 100 e nas células entre B1 e B3 nós temos os valores dos pesos 0,2; 0,3 e 0,5 e com isso temos a aplicação da função =MediaPonderada(A1:A3, B1:B3).

10. Função para Converter Celsius em Fahrenheit

Esta é uma função para converter graus Celsius para Fahrenheit no Excel.

Function CelsiusParaFahrenheit(celsius As Double) As Double
    CelsiusParaFahrenheit = (celsius * 9 / 5) + 32
End Function

Para aplicar usamos a seguinte função =CelsiusParaFahrenheit(25), na qual o valor 25 é convertido em Fahrenheit.

Como Colocar Funções Globais

Para aplicar as funções personalizadas no Excel de modo que sempre esteja disponíveis no Excel podemos criar um suplemento e colocar as funções em um módulo neste arquivo.

Criar um Suplemento VBA Excel

  • Abra um novo documento no Excel e clique em salvar, nomeie com um nome sugestivo como Minhas funções, no campo Salvar como tipo: altere o tipo para Suplemento do Excel(*.xlam).

Inserindo uma função no Suplemento VBA

  • Clique em Guia desenvolvedor->Visual Basic.
  • Lá selecione na guia de projetos VBAProject(Minhas funções.xlam) que acabou de ser criado.
Projetos
  • Com o projeto selecionado, clique no menu Inserir->Módulo.
  • Será criado um novo módulo,  clique duas vezes sobre ele e insira o código de uma das 10 funções citadas acima ou crie a sua.
  • Clique no botão Salvar e feche a janela do Visual Basic.

Inserindo o Suplemento VBA no Excel

  • Clique no ícone do Excel e depois no botão Opções.
  • Clique no botão Suplementos.
  • Selecione no botão Gerenciar o tipo Suplementos do Excel e clique no botão Ir.
Inserir Suplementos
  • Irá abrir uma tela para inserir o suplemento criado
  • Clique no botão Procurar e selecione o arquivo de suplemento que você criou.
  • Pronto! O suplemento estará com as funções disponíveis para uso.

Para usar a função basta abrir um documento qualquer ou criar um novo, digitar dois valores nas células A1 e A2 por exemplo e utilizar a função digitando o nome da sua função, no nosso caso =fAdd(A1;A2).

Conclusão

A criação de funções personalizadas no Excel podem ser feitas utilizando a nova função Lambda ou criando funções VBA no Excel.

Como vimos, há situações específicas que somente podem ser feitas utilizando funções como as que citamos nos códigos ao longo deste artigo.

5/5 - (Total de avaliações: 1)

Conheça nosso

Curso de Excel completo