Funções VBA - Guia para criar funções personalizadas usando VBA

Funções Excel VBA

Vimos que podemos usar as funções de planilha no VBA, ou seja, as funções da planilha do Excel na codificação VBA usando o método application.worksheet, mas como usamos uma função do VBA no Excel, bem, essas funções são chamadas de funções definidas pelo usuário, quando um usuário cria uma função em VBA, ela também pode ser usada em planilhas do Excel.

Embora tenhamos muitas funções no Excel para manipular os dados, às vezes precisamos ter alguma customização nas ferramentas para que possamos economizar nosso tempo enquanto fazemos algumas tarefas repetidamente. Temos funções predefinidas no Excel como SOMA, CONTAR.SE, SOMASE, CONTAR.VALC, ÍNDICE, CORRESPONDÊNCIA no Excel, etc. mas fazemos algumas tarefas diariamente para as quais um único comando ou função não está disponível no Excel, então usando VBA, podemos criar a função personalizada que é chamada de Funções Definidas pelo Usuário (UDF).

O que as funções do VBA fazem?

  • Eles realizam certos cálculos; e
  • Retorne um valor

No VBA, ao definir a função, usamos a seguinte sintaxe para especificar os parâmetros e seus tipos de dados.

O tipo de dados aqui é o tipo de dados que a variável manterá. Ele pode conter qualquer valor (qualquer tipo de dados ou objeto de qualquer classe).

Podemos conectar o objeto com sua propriedade ou método usando o símbolo de ponto ou ponto (.).

Como criar funções personalizadas usando o VBA?

Exemplo

Suponha que temos os seguintes dados de uma escola onde precisamos encontrar as notas totais marcadas pelo aluno, resultado e nota.

Para somar as notas pontuadas por um aluno individual em todas as disciplinas, temos uma função incorporada, ou seja, SUM, mas descobrir a nota e o resultado com base nos critérios definidos pela escola não está disponível no Excel por padrão .

Esta é a razão pela qual precisamos criar funções definidas pelo usuário.

Etapa 1: Encontre o total de marcas

Primeiro, encontraremos as notas totais usando a função SUM no Excel.

Pressione Enter para obter o resultado.

Arraste a Fórmula para o resto das células.

Agora, para descobrir o Resultado (Aprovado, Reprovado ou Repetição Essencial), o critério definido pela escola é esse.

  • Se o aluno obteve pontuação igual ou superior a 200 como notas totais de 500 e o aluno também não foi reprovado em nenhuma disciplina (obteve pontuação superior a 32 em cada disciplina), o aluno foi aprovado,
  • Se o aluno obteve pontuação igual ou superior a 200, mas o aluno foi reprovado em 1 ou 2 disciplinas, então o aluno obteve “Repetição Essencial” nessas disciplinas,
  • Se o aluno teve uma pontuação inferior a 200 ou foi reprovado em 3 ou mais disciplinas, o aluno foi reprovado.
Etapa 2: Criar função ResultOfStudent

Para criar uma função chamada 'ResultOfStudent', precisamos abrir o “Editor do Visual Basic” usando qualquer um dos métodos abaixo:

  • Usando a guia Desenvolvedor do Excel.

Se a guia Desenvolvedor não estiver disponível no MS Excel, podemos obtê-la usando as seguintes etapas:

  • Clique com o botão direito em qualquer lugar da faixa de opções e selecione Personalizar a faixa de opções no excel ' .

Quando escolhemos este comando, a caixa de diálogo “Opções do Excel” é aberta.

  • Precisamos marcar a caixa “Desenvolvedor” para obter a guia.
  • Usando a tecla de atalho, ou seja, Alt + F11.
  • Quando abrimos o editor VBA, precisamos inserir o módulo indo ao menu Inserir e escolhendo um módulo.
  • Precisamos colar o seguinte código no módulo.
Função ResultOfStudents (Marks As Range) As String Dim mycell As Range Dim Total As Integer Dim CountOfFailedSubject As Integer Para cada mycell Em Marks Total = Total + mycell.Value If mycell.Value = 200 And CountOfFailedSubject 0 Then ResultOfStudents = "Repetição essencial" ElseIf Total> = 200 And CountOfFailedSubject = 0 Then ResultOfStudents = "Aprovado" Else ResultOfStudents = "Falha" End If End Function

A função acima retorna o resultado para um aluno.

Precisamos entender como esse código está funcionando.

A primeira instrução, 'Function ResultOfStudents (Marks As Range) As String,' declara uma função chamada 'ResultOfStudents' que aceitará um intervalo como entrada para marcas e retornará o resultado como uma string.

Dim mycell As Range Dim Total As Integer Dim CountOfFailedSubject As Integer

Essas três declarações declaram variáveis, ou seja,

  • 'myCell' como um intervalo,
  • 'Total' como número inteiro (para armazenar o total de notas marcadas por um aluno),
  • 'CountOfFailedSubject' como inteiro (para armazenar o número de disciplinas nas quais um aluno foi reprovado).
Para cada mycell nas marcas Total = Total + mycell.Value If mycell.Value <33 Then CountOfFailedSubject = CountOfFailedSubject + 1 End If Next mycell

Este código verifica cada célula no intervalo 'Marcas' e adiciona o valor de cada célula na variável 'Total' e, se o valor da célula for menor que 33, adiciona 1 à variável 'CountOfFailedSubject' .

If Total> = 200 And CountOfFailedSubject 0 Then ResultOfStudents = "Repetição essencial" ElseIf Total> = 200 And CountOfFailedSubject = 0 Then ResultOfStudents = "Aprovado" Else ResultOfStudents = "Falha" End If

Este código verifica o valor de 'Total' e 'CountOfFailedSubject' e passa o ' Relatório essencial', 'Aprovado' ou 'Reprovado' de acordo com o 'ResultOfStudents'.

Etapa 3: Aplicar a função ResultOfStudents para obter o resultado

A função ResultOfStudents leva notas, ou seja, seleção de 5 notas pontuadas pelo aluno.

Agora selecione o intervalo de células, ou seja, B2: F2.

Arraste a fórmula para o resto das células.

Etapa 4: crie a função 'GradeForStudent' para obter notas

Agora, para descobrir a nota do aluno, criaremos mais uma função chamada 'GradeForStudent'.

The code would be:

Function GradeForStudent(TotalMarks As Integer, Result As String) As String If TotalMarks> 440 And TotalMarks 380 And TotalMarks 320 And TotalMarks 260 And TotalMarks = 200 And TotalMarks <= 260 And (Result = "Passed" Or Result = "Essential Repeat") Then GradeForStudent = "E" ElseIf TotalMarks < 200 Or Result = "Failed" Then GradeForStudent = "F" End If End Function

This function assigns a ‘Grade’ to the student based on the ‘Total Marks’ and ‘Result.’

We just need to write the formula and open the brackets in Cell H2 and pressing Ctrl+Shift+A to find out about the arguments.

A função GradeForStudent leva as notas totais (soma das notas) e o resultado do aluno como argumento para calcular a nota.

Agora selecione as respectivas células, ou seja, G2, H2.

Agora só precisamos pressionar Ctrl + D depois de selecionar as células para copiar as fórmulas.

Podemos destacar os valores inferiores a 33 com a cor de fundo vermelha para que possamos descobrir as disciplinas em que o aluno foi reprovado.

Artigos interessantes...