Módulo de classe no VBA : As vantagens de utilizar Classe

Módulo de classe no VBA, essa é uma pergunta muito constante entre iniciantes da programação VBA. Até mesmo programadores experientes, muitas das vezes não entendem sobre o real motivo do módulo de classe no Excel.

Hoje irei te mostrar qual a finalidade do módulo de classe, e como aplica-lo em seus projetos. Se você deseja saber mais sobre esse assunto, continue lendo esse artigo até o final. Lembre-se que a baixo desse post temos uma seção de comentários, na dúvida pergunte pra gente ;).

Índice do conteúdo

Para que serve o módulo de classe VBA?

O módulo de classe do VBA é um componente usado para descrever propriedades e métodos de um objeto. A linguagem Visual Basic (VBA) possui suporte para uso de classes através desses componentes.

Módulo de classe no VBA

O que é classe e objeto?

Como foi citado pelo grande Felipe Costa Gualberto…

Se considerarmos que um bolo é um objeto, sua receita certamente seria uma classe. Seguindo o raciocínio, é possível fazer vários bolos a partir de uma receita, ou vários objetos a partir de uma classe. Uma classe não aloca memória em tempo de execução, e um objeto sim, já que a classe possui apenas a definição do objeto que cria.



Uma classe descreve as propriedades e métodos de um objeto. Propriedades podem ser entendidas como características de um objeto, e métodos, ações que o mesmo promove.

Por exemplo, considere o objeto Carro. Entre suas propriedades, podemos citar cor, quilometragem, chassi, marca, modelo e etc. Os métodos poderiam ser ações como dar a partida, acionar o para-brisa, frear, buzinar. Se fizermos uma a analogia que uma propriedade é um adjetivo, certamente um método é um verbo.

Texto Font – Ambiente Office

Programação orientada a objetos (POO)

Esse modelo de programação foi criado no intuito de aproximar o ambiente virtual do mundo real. Portanto, para que você entenda nossos exemplos é necessário que tenha uma base teórica sobre esse assunto. Caso contrário, será impossível você compreender o real motivo e existência do módulo de classe no VBA.

Um módulo de classe em geral, é um componente “exclusivo para se trabalhar orientado a objetos”. No entanto, você não é obrigado a utilizá-lo em todas as linguagens de programação, exemplo disso é o VBA.

Todos sabem que apesar dor VBA ter suporte ao (POO), ele não é considerado uma linguagem 100% orientada a objetos. Pois ele não implementa todos os 4 pilares desse paradigma. No entanto o VBA implementa 2 desses conceitos, e eles são:

  1. Abstração(SIM)
  2. Encapsulamento(SIM)
  3. Herança(NÃO)
  4. Polimorfismo(SIM) *apenas através de interfaces*

Resumindo os 3 pilares da programação orientada a objetos

  • Abstração: Como o próprio nome diz, visa abstrair algo do mundo real e transforma-lo em um objeto na programação. Esse objeto será composto por uma identidade, propriedades e métodos. Dessa forma fica mais simples trazer para dentro da programação o problema que precisa ser resolvido ou o processo que precisará ser automatizado.
  • Encapsulamento: Esse pilar visa a proteção de variáveis que não podem ser manipuladas diretamente. Por exemplo, quando clicamos no botão ligar da televisão, não sabemos o que está acontecendo internamente. Podemos então dizer que os métodos que ligam a televisão estão encapsulados.
  • Herança: Esse pilar pode herdar as propriedades de outra classe pai como por exemplo, a classe cachorro herda as propriedades da classe mamífero. Essa analogia indica que o cachorro tem características próprias, mas ele é um mamífero e compartilha das mesmas características que um gato, porém cada qual com suas peculiaridades e ações diferenciadas.
  • Polimorfismo: Na natureza, vemos animais que são capazes de alterar sua forma conforme a necessidade. Como sabemos, os objetos filhos herdam as características e ações de seus “ancestrais”. Entretanto, em alguns casos, é necessário que as ações para um mesmo método seja diferente. Em outras palavras, o polimorfismo consiste na alteração do funcionamento interno de um método herdado de um objeto pai.

Apesar de sitar 4 referencias, o modelo de abstração “não é considerado um pilar no poo”. Portanto, não abrimos mão dele diretamente, mas na biografia que aprendi os principais pilares são: Encapsulamento, Herança e Polimorfismo.

Uma breve reflexão sobre os módulos de classe no VBA

Se você chegou até aqui, pode esta dizendo: “Welisson eu não entendi absolutamente nada do que foi dito até agora. Fique tranquilo, realmente entender sobre POO não é uma das coisas mais simples. Se você deseja usar módulos de classes no VBA, precisará aprender POO não tem jeito.

Pra isso eu preparei alguns exemplos práticos, com eles eu tenho certeza que você vai entender tudo o que foi dito até agora. Para reforçar seus estudos,vou deixar um link de um curso 100% grátis no final do artigo. Com esse curso eu aprendi tudo sobre POO, super recomendo pra você!

Implementando classe no VBA

Nessa parte de exemplos práticos, iremos abordar conceitos básicos que você certamente usa na programação dos seus projetos, dessa maneira ficará simples o entendimento. Abra seu editor de código VBE e insira um módulo novo de classe, na propriedade do módulo muda o Name para CslPessoa.

Módulo de classe no VBA

Agora, vamos construir as definições de nossa classe ClsPessoa. Copie e cole o código dentro da classe.

Option Explicit
Private vNome    As String
Private vIdade   As Integer
Private vSexo    As String
Public Sub Print_Informacoes_Pessoa()
Debug.Print (vNome & Space(3) & vIdade & Space(3) & vSexo)
End Sub
Public Property Get Nome() As String
Nome = vNome
End Property
Public Property Let Nome(Value As String)
vNome = Value
End Property
Public Property Get Idade() As Integer
Idade = vIdade
End Property
Public Property Let Idade(Value As Integer)
vIdade = Value
End Property
Public Property Get Sexo() As String
Sexo = vSexo
End Property
Public Property Let Sexo(Value As String)
vSexo = Value
End Property

Após realizar os passos indicados, devemos adicionar um módulo normal.

Módulo de classe no VBA

Dentro do módulo normal você deve criar um método que iremos chamar de Private Sub Set_Informacoes_Pessoa().  Faça exatamente como na imagem Gifs a seguir, e veja o resultado. 

Módulo de classe no VBA

Agora você deve habilitar a janela de verificação imediada do VBA, para poder ver o resultado após execução.

Módulo de classe no VBA

Veja o código em modo depuração, aponte o curso na sub criada e depois clique na tecla F8 de seu teclado .

Módulo de classe no VBA

Explicando esse exemplo do módulo de classe no VBA

Nossa intenção foi mostrar o básico do POO no VBA. Nesse exemplo, tivemos como objetivo principal criar uma classe, definir suas propriedades, métodos e por fim executar uma ação. Essa ação, consistiu em passar valores para os atribuídos da classe e realizar um print das informações na janela de verificação imediata do VBA.

Na programação orientada a objetos, não é possível executar métodos ou usar propriedades de uma classe sem instancia-la. Instanciar é criar um objeto, ou seja, alocar um espaço na memória, para posteriormente poder utilizar os métodos e atributos que o teu objeto dispõe, pode ser representado pelas seguintes linhas:

Módulo de classe no VBA

O primeiro conceito básico da programação orientada objetos é:

  • Definir a estrutura 
  • Instanciar objeto
  • Consumir o objeto
  • Destruir objeto 

Já podemos dizer que no primeiro instante usamos os 2 pilares do Poo, á abstração e o encapsulamento. Ao criar nossa classe, nos definimos os atributos que toda pessoa possui ou seja: nome, idade, sexo e etc. Em outras palavras, nós pegamos algo do mundo real e transformamos isso em objeto para nosso projeto.

Mas Welisson uma pessoa não é um objeto!

Quando se trata de POO sim, uma pessoa é considerada um objeto. Pois objetos são características definidas pelas classes, objeto no poo é uma forma de expressar o conceito desse paradigma. 

Como citei, o segundo paradigma também foi executado nesse exemplo. Toda vez que você definir os atribuídos da sua classe como privadas(Private), estará realizando o encapsulamento. Isso porque você estará dizendo para seu sistema, que essas variáveis só podem se acessadas diretamente da classe.  

Espera ai, e se eu precisar acessar essas variáveis de fora da classe?

Nesse caso será necessário adicionar os métodos assessores na classe. Os métodos assessores, podem ser comparados como funcionários no mundo real. Por tanto será deles o trabalho de passar e receber valores de uma classe, não deixando o usuário acessar os atributos diretamente.

O Que São Métodos Assessores?

Toda linguagem de programação orientada a objetos possui métodos assessores. A única maneira de se trabalhar com variáveis privadas de sua classe, é através desses métodos. Isso porque por padrão, métodos assessores são definidos como Públicos(Public).

Dessa forma é possível acessar os atributos indiretamente, evitando erros e possíveis confusões em seu código. Cada linguagem de programação tem sua maneira diferente de trabalhar com esses métodos. No caso do VBA, os métodos assessores são os Get e Let.

Módulo de classe no VBA

Toda vez que você quiser pegar o valor de uma atributo privado, você deve criar um assessor Get do tipo publico na sua classe. O mesmo deverá ser feito com o Let, caso queira deixar um valor para a propriedade. 

Esse conceito é muito comum no mundo real em que vivemos, onde tudo funciona exatamente dessa forma. Quero que você analise a imagem a seguir, com muita atenção:

Módulo de classe no VBA

Ir ao supermercado é uma rotina que faço pelo menos duas vezes ao mês, acredito que você também. Você sabe me dizer se existe algum supermercado no brasil, que permita o cliente ter acesso diretamente ao caixa sem que o atendente esteja lá?

Com 100% de certeza que não!

Isso porque seu acesso ao caixa é privado, apenas pessoas autorizadas podem fazer esse trabalho. Imagine que o supermercado é uma classe muito grande que possui centenas de propriedades e métodos, e que o atendente é um método assessor Get e Let, sendo responsável por pegar seu dinheiro e devolver o troco.

Podemos dizer que esse acesso é indireto, você não possui permissão, mas pessoas internas SIM. Dessa forma o supermercado consegue atender você e ao mesmo tempo, manter a segurança do estabelecimento. Os métodos assessores na programação orientada a objetos, são como agentes de um supermercado na vida real, somente eles podem acessar atributos privados da classe.

Módulo de classe no VBA

Você não é obrigado a implementar os métodos assessores em sua classe, mas fique sabendo que eles estão relacionados diretamente ao paradigma de incapsulamento(POO). No entanto você deve ter bom senso, e somente fazer uso desses métodos quando necessário.

Devo utilizar os métodos assessores Get e Let?

Apesar de implementarmos os métodos Get e Let na classe ClsPessoa, apenas  o Let foi usado. Isso aconteceu, porque no primeiro exemplo o objetivo principal foi passar valores, e não pegar valores da classe.

Agora vamos fazer um experimento, exclua todos os métodos Get e Let da classe ClsPessoa e mantenha apenas as variáveis privadas. Depois disso, tente acessar as propriedades da classe novamente.

Módulo de classe no VBA

Note que após excluir os métodos Get e Let, não temos mais acesso aos atributos privados da classe. O único acesso que nos foi permitido, foi o método criado para realizar o print das informações. Isso aconteceu porque esse método foi definido como publico, então ao instanciar o objeto ele torna-se visível para todo o projeto.

Faça o mesmo com as variáveis privadas da classe, modifique-as para publicas e veja o resultado:

Módulo de classe no VBA
Módulo de classe no VBA

Você agora pode estar se perguntando, mas não seria bem mais fácil dessa forma?, pra que implementar métodos assessores, isso não faz sentindo!

Esse é um dos paradigmas do POO o principal objetivo é a separação dos conceitos de atributos, e comportamentos de um objeto. São diversos benefícios, mas também representa algum inconveniente adicional. O importante é não considerar este inconveniente como um problema, mas sim um caminho a ser seguido para um bom desenho de classes. Para exemplificar, vamos pegar uma questão:

– qual a diferença entre obj.nome = “x” e obj.setNome(“x”)?

No primeiro caso você está manipulando o atributo de um objeto, enquanto no segundo você está utilizando um comportamento definido do objeto. O conceito de encapsulamento diz que você não precisa conhecer os atributos de um objeto, mas apenas utilizar seus comportamentos.

Então imagine que seu objeto possua 2 atributos para a definição de nome: “primeiroNome” e “sobrenome”, não é sua responsabilidade conhecer ou controlar isto, você apenas precisa conhecer o comportamento de definir nome: “obj.setNome(nome)”, o resto é responsabilidade do próprio objeto.

É claro, não leve o exemplo ao pé da letra, existem situações e situações. Eu também utilizei “obj.” ao invés de “Me.” pois o Me representa o próprio objeto, o que foge do conceito de encapsulamento.

Então eu devo usar os métodos Get Let ou não?

Isso vai depender do projeto e você também precisa ter bom senso, imagine a seguinte situação. Em nosso projeto temos o atributo chamado Idade, porem esse atributo não pode receber os seguintes valores 0,-1,-2,-3 e etc. Como posso evitar isso, se o acesso a essa propriedade for totalmente direto?

Módulo de classe no VBA

Ao criar os métodos assessores para essa propriedade, podemos então implementar restrições. Isso não seria possível, se o acesso ao atributo fosse totalmente direto.

Lembra do exemplo do supermercado?

Se comparamos essa ideologia no mundo real, o funcionário receberá seu dinheiro mas antes fara uma serie de verificações. Essas verificações poderiam ser: Analisar se o valor estar correto, se o dinheiro é falso ou então se o método de pagamento é permitido pela empresa. 

Como implementar os métodos Get e Let na Classe?

No VBA a implementação dos métodos assessores é muito simples, primeiro você precisa definir a variáveis da classe. Após fazer isso, você referencia esses métodos assessores as essas propriedades. É importante ressaltar que existe vários modelos de implementação do Get e Let, irei explicar quais são e os que mais indico.

A primeira implementação é a mesma que fizemos para os exemplos anteriores:

Módulo de classe no VBA

O problema dessa implementação, estar na definição das propriedades da classe(Variáveis). Se você observar bem, nos usamos um prefixo (V) para cada atributo, e isso não é muito indicado. Portanto, para que você tenha um código enquadrado nas regras de boas práticas de programação fuja desse modelo.

Aiai, se é para fugir desses modelos porque você fez os exemplos assim?

Não que isso seja uma regra, ou que seja errado trabalhar dessa maneira. Porem sempre pense no seu código sendo trabalhado em um ambiente de desenvolvimento, usar prefixos nas propriedades da classe ao meu ver deixa o código feio e embolado. Por outro lado, sem usar esses prefixos também não seria possível trabalhar, porque o VBA não aceita propriedades duplicadas no corpo do código.

Módulo de classe no VBA

Em outras linguagens de programação, como por exemplo Java ou C# geralmente usamos prefixos Get e Set  nos métodos assessores, veja um exemplo:

public class Ponto {
private double x;
private double y;
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}   
}

No VBA podemos fazer semelhante ao exemplo a seguir, isso não e uma regra sabemos que ao logo dos seus estudo vai aprendendo coisas novas:

Private Nome  As String
Private Idade As Integer
Private Sexo  As String
Public Property Get getNome() As String
getNome = Nome
End Property
Public Property Let letNome(Value As String)
Nome = Value
End Property
Public Property Get getIdade() As Integer
getIdade = Idade
End Property
Public Property Let letIdade(Value As Integer)
Idade = Value
End Property
Public Property Get getSexo() As String
getSexo = Sexo
End Property
Public Property Let letSexo(Value As String)
Sexo = Value
End Property

Em termos de execução trabalhar dessa forma é muito bom, porem com VBA eu particularmente não gosto. Isso porque no momento de acessar os atributos da classe, são geramos muitas propriedades veja:

Módulo de classe no VBA

Embora isso seja comum em linguagens como java e c#, eu não gosto de trabalhar assim no VBA. Como foi dito visual Basic(VBA) não é considerado uma linguagem 100% orientada a objetos. A pesar do VBA dar suporte a esse paradigma, suas ferramentas são meio complicadas se comparadas com outras linguagens do mercado. Portanto, vou mostrar outro modelo muito bacana veja o exemplo:

Private Type ClassType
Nome  As String
Idade As Integer
Sexo  As String
End Type
Private This As ClassType
Public Property Get Nome() As String
Nome = This.Nome
End Property
Public Property Let Nome(Value As String)
This.Nome = Value
End Property
Public Property Get Idade() As Integer
Idade = This.Idade
End Property
Public Property Let Idade(Value As Integer)
This.Idade = Value
End Property
Public Property Get Sexo() As String
Sexo = This.Sexo
End Property
Public Property Let Sexo(Value As String)
This.Sexo = Value
End Property

Nesse modelo a estrutura da classe ficou muito mais legível, isso facilita nossa leitura e o refaturamento do código. Note que no escopo do código não precisamos indicar um modificador de acesso para cada atributo, e sim apenas para o Type que criamos.

Módulo de classe no VBA

Após isso basta criar um variável e referenciar nosso type criado, eu sempre uso o This:

Módulo de classe no VBA

A parti de agora, todos os nossos atributos privados são acessados diretamente pela propriedade This:

Em linguagens consideradas 100% orientadas a objetos como o java por exemplo, o This representa o próprio objeto. Em termos de uso, isso facilita a leitura de sua classe, portanto recomendo que use esse padrão. Isso também estar relacionado diretamente as regras de encapsulamento.

→Clique Aqui Nesse Link Agora, E Entenda Melhor Esse Modelo!

Classes de interface, para que serve?

Interface é um recurso de linguagens que implementam o paradigma do POO, elas representam inúmeras vantagens no sentido da modelagem e instanciação de objetos, porem deve-se entender claramente os conceitos básicos da orientação a objetos a fim de utilizá-la plenamente.

Uma interface é como um contrato, através dele podemos especificar quais métodos as classes terão que implementar. Uma interface não pode ser instanciada, ele pode ser usada como tipo de variável que receberá um objeto da classe que implementa esta interface.

Dentro de uma interface pode ser definido variáveis e todas serão constantes, também podemos definir a assinatura de métodos e todos os métodos declarados são public. Quando uma classe implementa uma interface, está classe também precisa implementar todos os métodos da interface.

O VBA não possui classes especificas de interface como C# e o Java por exemplo. O que podemos fazer é definir métodos em uma classe normal, e então utilizar a palavra chave Implements para implementa-la como uma interface. Apesar de funcionar muito bem, em termos de organização de pacotes e entidades do projeto, dependendo do tamanho do sistema isso torna-se complicado. Módulo de classe no VBA.

Mais uma vez repetindo, que o vba não é uma linguagem focada no paradigma orientação a objetos. Hoje a melhor ferramenta para se trabalhar com POO usando o VB, seria o vb.net. No próximo tópico vamos entender as interfaces de forma mais simplificada, continue lendo!

O que e Polimorfismo na programação propriamente dito?

O visual basic(VBA) não é uma linguagem que permite herança, portanto não permite polimorfismo através de herança. No entanto, é possível aplicar polimorfismo no vba através de interfaces, então vamos mostrar alguns exemplos a seguir mas antes vamos entender o conceito do polimorfismo.

A palavra polimorfismo vem do grego e significa aquilo que pode tomar várias formas. Esta característica é um dos conceitos essenciais da programação orientada a objetos (POO). Enquanto a herança se refere às classes e a sua hierarquia, o polimorfismo diz respeito aos métodos dos objetos.

Para que você entenda a teoria do polimorfismo, preparei um diagrama representativo. Cada bloco desse diagrama representa uma classe, e essas entidades serão referidas a animais da vida real veja o exemplo:

O primeiro membro da estrutura é representada pelo classe Animal, nesse contexto ela é uma  interface e possui o método emite som. Também adicionamos as classes Cachorro, Gato e Galinha e elas irão implementar essa interface. A implementação ocorre porque todo animal possui um método em comum que é emitir sons. A diferença é que cada animal tem sua característica diferente de emitir esse som, mas não é encargo da interface saber como esses sons serão emitidos e sim da classe que implementa a interface.

Ainda não ficou claro pra você? estão vamos criar um exemplo no VBA!

Aplicando o polimorfismo com Excel VBA

Adicione 4 módulos de classe no Excel VBA, e renomeie as propriedades seguindo esse exemplo:

A classe animal foi descrita com um prefixo(I), e na programação orientada a objetos isso indica que ela é uma interface. Na classe animal vamos descrever apenas um método publico que sera chamado de EmitirSom. Esse método por padrão é abstrato, e não sofre implementações em seu corpo.

No VBA para realizar a implementação de uma interface, vamos utilizar a palavra chave Implements. Todas as classes deverão implementar nossa interface IAnimal veja o exemplo:

Módulo de classe no VBA

Depois que você implementar a interface IAnimal, clique na listagem de eventos da classe atual. Observe que ClsCachorro, ClsGato e ClsGalinha possuem acesso ao método emitir som da interface IAnimal. Esse método é dividido por duas palavras chave, primeiro o nome da interface e depois o nome do método implementado:

Depois de implementar nossa interface, precisamos descrever as estruturas dos métodos implementados. Lembre-se, somente as classes ClsCachoro, ClsGato e ClsGalinha sofrerão modificações no corpo do método:

Private Sub Animal_EmitirSom()
Dim Cachorro As ClsCachorro
Dim Gato As ClsGato
Dim Galinha As ClsGalinha
Dim Animal As IAnimal
Set Cachorro = New ClsCachorro
Set Animal = Cachorro
Animal.EmitirSom
Set Gato = New ClsGato
Set Animal = Gato
Animal.EmitirSom
Set Galinha = New ClsGalinha
Set Animal = Galinha
Animal.EmitirSom
Set Cachorro = Nothing
Set Gato = Nothing
Set Galinha = Nothing
Set Animal = Nothing
End Sub

Observando a classe ClsCachorro, ClsGato e ClsGalinha, podemos notar que ambos os métodos são iguais. Como já foi dito, essas entidades implementaram o mesmo método da interface IAnimal. Em outras palavras, nós criamos um método único que fez 3 tipos de ações diferentes. Módulo de classe no VBA.

Polimorfismo mais simples que isso só se for na china kk, brincadeiras a parte!

Muitos programadores pensam que o uso de interfaces é algo sem sentindo, mas isso não é verdade. As interfaces são ferramentas indispensáveis, quando trata-se de modelagem de classes. Se você é desenvolvedor vba eu posso te provar, que você utiliza interfaces indiretamente em seus projetos mas não sabia

Que pagar pra ver rs?, então vamos lá!

Faça o seguinte agora mesmo, adicione um novo UserForm e veja:

Quando trabalhamos com UserForms, o que muitos programadores não sabem é que estamos usando classes. O próprio UserForm é uma classe, e ele “herda” diversos métodos por padrão, métodos esses que são implementados por uma interface interna do visual básic.

Caramba… Mas porque o VBA implementa essas interfaces no UserForm Welisson? Módulo de classe no VBA.

Pois bem como já expliquei, a arte do polimorfismo é tomar diversas formas. Em outras palavras, executar as mesmas ações para entidades que compartilham das mesmas características. No exemplo dos UserForms, sabemos que o TextBox, Combobox, Button e até mesmo Ranges muitas das vezes compartilham dos mesmos eventos. Módulo de classe no VBA.

Então seguindo esse raciocínio abordando o método Change por exemplo, pense no UserForm com 50 controles. Já imaginou se você tiver que criar um evento change para cada objeto do formulário, por exemplo: Textbox1_Change1, Textbox2_Change2, TextBox3_Change3, Textbox4_Change4 e assim por diante?

Essa mesma ideologia vale para o cadastramento de pessoas em um sistema, por exemplo. Preparei um diagrama para que você entenda o que estou dizendo na integra:

Private Sub Execute()
Dim Cliente As ClsCliente
Dim Funcionario As ClsFuncionario
Dim Usuario As ClsUsuario
Dim Pessoa As IPessoa
Set Cliente = New ClsCliente
Set Pessoa = Cliente
Pessoa.Cadastrar
Pessoa.Editar
Pessoa.Deletar
Set Funcionario = New ClsFuncionario
Set Pessoa = Funcionario
Pessoa.Cadastrar
Pessoa.Editar
Pessoa.Deletar
Set Usuario = New ClsUsuario
Set Pessoa = Usuario
Pessoa.Cadastrar
Pessoa.Editar
Pessoa.Deletar
Set Cliente = Nothing
Set Funcionario = Nothing
Set Usuario = Nothing
Set Pessoa = Nothing
End Sub

Mas ai você pode dizer: “Que diferença isso fez, se de qualquer forma tenho que descrever eles para todas as classes?”

Pense no seu programa depois de 5 a 10 anos, onde você terá centenas de eventos. Imagine a dor de cabeça para encontrar métodos específicos, já que você tem 1 bilhão de replicações em todo o sistema. Vai por mim, realizar manutenção em softwares não é uma tarefa muito agradável principalmente nesse sentindo. Módulo de classe no VBA.

Imagine uma equipe, é bem mais fácil passar para o programador a interface que ele tem que implementar ao invés dele ter que ficar criando os métodos e derrepente alterar os parâmetros do seu método, fazendo com que não exista a possibilidade de utilizar o polimorfismo. Eu acredito que se você ficar um tempinho sem pegar em um projeto, seu tempo de adaptação vai ser maior. Com a interface você apenas implementa, e ela cumprirá com o contrato.

É claro pessoal, isso não é um regra e nem estou dizendo que vocês estão errados de trabalhar assim. Veja essa ferramenta como uma forma de tornar seus programas ainda melhores, use-a ao seu favor para ganhar mais tempo e consequentemente mais dinheiro.

Herança, é possível no VBA?

Sei que isso é uma tristeza, mas infelizmente o vba excel não possui suporte para herança. Não que isso seja o fim do mundo como muitos dizem, porem esse paradigma é essencial para toda linguagem que implementa o conceito da programação orientada a objetos. Módulo de classe no VBA

O que podemos fazer para chegar mais perto disso, seria tentar simular uma herança. No blog do Marcoratti existe um exemplo muito interessante.

→O link do artigo estar aqui, leia depois…

Seguindo o exemplo dele eu fui capaz de “realizar herança no VBA”, mesmo que não seja uma das melhores formas posso dizer que quebra um galho. Só que esse assunto é tema para um próximo artigo, se você quiser saber o que fiz junto com a ideia do marcoratti acompanhe esse site.

Conclusão final sobre os módulos de classe em VBA

Eu acho que falei até de mais, mas não podia deixar de ser chato nessas horas rs. Então para não ser longo na conclusão final, quero deixar bem claro que você não é obrigado a utilizar módulos de classe no vba. Por outro lado, posso dizer que você pode estar desperdiçando ótimos recursos que facilitarão muito sua vida. 

Acredito que até aqui você entendeu os benefícios que a programação orientada a objetos podem trazer para a vida do programador. Portanto, cabe a você decidir se isso fara parte de seus projetos ou não. Lembre sempre que essa é uma decisão muito particular, eu demorei para adotar o POO na minha vida mas acadei por ser convencido. 

Hoje já não consigo pensar nos meus programas, sem o uso de módulos de classe!

Esse artigo é apenas a ponta de um iceberg quando o assunto trata-se de módulos de classe. Isso porque são inúmeras as utilidades desse componente, portanto é muito importante que você continue estudando. Particularmente recomendo que você faça o uso de classes em seus projetos, mas tenha sempre bom senso é claro. Módulo de classe no VBA.

Como havia prometido, vou deixar o link do curso que aborda tudo sobre programação orientado a objetos. Esse curso é 100% grátis e garanto que você vai aprender muito com ele. Não se esqueça de inscreve-se no canal do instrutor, ele possui ótimas dicas e você não vai precisar pagar por isso! Módulo de classe no VBA. Módulo de classe no VBA.

→Clique Aqui E Acesse O Curso De Programação Orientada A Objetos

Bem por fim é isso, até a próxima!

Veja mais…

Sistema de Controle Financeiro Completo em Excel 4.0

Planilhas para a gestão do seu negócio em Excel

Gerar orçamento em Excel e salvar em PDF

Planilha simulador de parcelamento em Excel