Você já conhece os módulos de classe no VBA? Hoje eu quero te mostrar uma introdução a esses módulos para organizar seus códigos.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala, Impressionadores! Hoje eu vou mostrar uma introdução a módulos de classe no VBA que vocês pediram!
Esse é um tema muito interessante, pois os módulos de classe no VBA vão deixar o seu código mais organizado e mais fácil de ser lido.
Então mesmo que você não tenha escrito o código você vai notar que é muito mais fácil entender o que foi feito.
A ideia é te mostrar como usar classes no VBA, como fazer a organização do código com classes e como importar classes no VBA.
Sim, é possível importar classes para facilitar o seu trabalho sem que você tenha que refazer tudo que já fez.
Pode simplesmente arrastar a classe que você exportou para dentro do VBA e pronto, já pode utilizá-las!
E aí, bora aprender o que são classes no VBA e como elas podem te auxiliar na sua programação?
Inserindo um Módulo de Classe no VBA
Para criar um código dentro de um módulo, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11.
Como não temos nenhum módulo de classe destinado ao tema da aula de hoje, e por questão de organização, vamos criar um módulo de classe à parte.
Vamos na guia Inserir > Módulo de classe, e uma caixa branca se abrirá.
Por padrão ele terá o nome de “Classe 1”.
Colocaremos os seguintes códigos (subs e functions) dentro dele:
Option ExplicitPublic nome As StringPublic email As StringPublic dataNasc As DatePublic area As StringPublic dataContra As DatePublic cpf As LongLongPublic salIni As DoublePublic salAtual As DoublePublic Function calcIdade() As Long Dim idade As Long idade = WorksheetFunction.RoundDown((Date - dataNasc) / 365, 0) MsgBox ("O funcionário " & nome & " tem " & idade & " anos.")End Function
Explicação do código acima:
Vamos dimensionar:
as variáveis “nome”, “email”, “área” como sendo do tipo String (texto)
as variáveis “dataNasc”, “dataContra” como sendo do tipo Date (data)
as variáveis “salIni” e “salAtual” com sendo do tipo Double (número com casa decimal)
a variável “cpf” como sendo do tipo LongLong (número muito grande)
Declarar uma função pública chamada “calcIdade”, que não terá nenhum argumento, com resposta dada como um número do tipo Long (número grande)
Dentro dessa function, vamos executar os seguintes passos:
Declarar a variável “idade” como um número do tipo Long
A variável “idade” vai receber o que for resultado da fórmula que vai arredondar para baixo a conta que vai gerar a sua idade em número inteiro (sem vírgulas)
Gerar uma MsgBox que vai dizer idade do funcionário, apontados respectivamente pelas variáveis “idade” e “nome”
Public Function calcTempoContrat() As Long
Dim diasContrat As Long
diasContrat = Date - dataContra
MsgBox ("O funcionário " & nome & " foi contratado há " & diasContrat & " dias.")
End Function
Explicação do código acima:
Declarar uma função pública chamada “calcTempoContrat”, que não terá nenhum argumento, com resposta dada como um número do tipo Long (número grande)
Dentro dessa function, vamos executar os seguintes passos:
Declarar a variável “diasContrat” como um número do tipo Long
A variável “diasContrat” vai receber o que for resultado da fórmula que vai fazer a subtração entre a data atual (dada pela função Date) e a a variável “dataContra”, que é uma variável conhecida do módulo de classe
Gerar uma MsgBox que vai dizer o nome do funcionário e há quantos dias está contratado, apontados respectivamente pelas variáveis “nome” e “diasContrat”
Public Function alterarArea(novaArea As String)
Dim areaAntiga As String
areaAntiga = area area = novaArea Cells(2, 4).Value = area
MsgBox ("O funcionario " & nome & " mudou da área '" & areaAntiga & "' para a área '" & area & "'.")
End Function
Explicação do código acima:
Declarar uma função pública chamada “alterarArea”, que terá a variável “novaArea” como argumento, que será uma variável do tipo String (texto)
Dentro dessa function, vamos executar os seguintes passos:
Declarar a variável “areaAntiga” como sendo do tipo String (texto)
A variável “areaAntiga” vai receber o que estiver na variável área (que já é uma variável conhecida do módulo de classe)
A variável conhecida do módulo de classe “area” vai receber o valor da variável que foi passada pela function, a “novaArea”
A célula da 2ª linha, da 4ª coluna (célula D2) vai receber o valor que estiver na variável “area”
Gerar uma MsgBox que vai dizer o nome do funcionário, a área antiga e a área nova, apontados respectivamente pelas variáveis “nome”, “areaAntiga” e “area”
Public Function aumentoSalario(aumentoPerc As Double)
MsgBox ("O novo salário do funcionario " & nome & " é de " & Format(salAtual, "R$ #,##0.00"))
End Function
Explicação do código acima:
Declarar uma função pública chamada “aumentoSalario”, que terá a variável “aumentoPerc” como argumento, que será uma variável do tipo Double (possibilidade de número decimal, com vírgula)
Dentro dessa function, vamos executar os seguintes passos:
Declarar a variável “novoSalario” como sendo do tipo Double
A variável “novoSalario” vai receber o que for resultante do arredondamento com 0 casas da multiplicação da variável “salAtual” (que já é uma variável conhecida do módulo de classe) por (1+ aumentoPerc).
A variável “salAtual” vai receber o valor da variável “novoSalario”, calculada anteriormente
A célula da linha 2 e coluna 8 vai receber o valor da variável “salAtual”, depois do cálculo
Gerar uma MsgBox que vai dizer o nome do funcionário e o novo salário, apontados respectivamente pelas variáveis “nome” e “salAtual”, formatada para moeda
Inserindo um Módulo no VBA
Para criar um código dentro de um módulo, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11.
Como não temos nenhum módulo destinado ao tema da aula de hoje, e por questão de organização, vamos criar um módulo à parte.
Vamos na guia Inserir > Módulo, e uma caixa branca se abrirá.
A primeira linha diz que que todas as variáveis utilizadas no código serão obrigatoriamente declaradas. Observe que isso é algo que é colocado fora da estrutura das nossas subs (vem antes do começo da Sub, de fato)
Vamos dimensionar:
A variável “funcionario” como um novo objeto da “classeFuncionario”, assumindo assim todas as propriedades e métodos (funções) criadas dentro dela
A propriedade “nome” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 1ª coluna
A propriedade “email” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 2ª coluna
A propriedade “dataNasc” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 3ª coluna
A propriedade “area” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 4ª coluna
A propriedade “dataContra” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 5ª coluna
A propriedade “cpf” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 6ª coluna
A propriedade “salIni” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 7ª coluna
A propriedade “salAtual” do objeto “funcionario” vai receber o valor que estiver na célula da 2ª linha e 8ª coluna
Vamos utilizar do método/função “calcIdade” do objeto “funcionario”, que foi a function criada e explicada anteriormente
Vamos utilizar do método/função “calcTempoContrat” do objeto “funcionario”, que foi a function criada e explicada anteriormente
Vamos utilizar do método/função “alterarArea” do objeto “funcionario”, que foi a function criada e explicada anteriormente, passando para ela o argumento “Financeiro”, que assumirá o valor da variável “novaArea” da função
Vamos utilizar do método/função “aumentoSalario” do objeto “funcionario”, que foi a function criada e explicada anteriormente, passando para ela o argumento “Financeiro”, que assumirá o valor da variável “aumentoPerc” da função
No começo do código temos o seguinte cenário:
Ao final do código, teremos os valores pesquisados mostrados nas MsgBox, e no Excel:
Expert em VBA e Power BI da Hashtag Treinamentos. Auxilia no suporte aos alunos da Hashtag Treinamentos e na criação de conteúdos para os que acompanham nossos canais.
Procure o que você quiser sobre Excel, VBA, Power BI ou Python:
Aprenda tudo de Excel para se tornar uma referência no Mercado de Trabalho
Leve os treinamentos da Hashtag para dentro da sua Empresa