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 ;).

Não se esqueça de curti e compartilhar essa postagem, pois estará ajudando muito nosso canal!

 

Í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.

Para que serve o módulo de classe do vba excel

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

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 Classes No VBA

Nessa parte de exemplos práticos, iremos abordar conceitos que você certamente usa na programação de seus projetos, dessa forma será simples o intendimento. Abra seu editor VBA e insira um novo módulo de classe, defina a propriedade Name do objeto para ClsPessoa.

 

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. 

 

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 Gif a seguir, e veja o resultado. 

 

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

 

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

 

Explicando Esse Exemplo

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:

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.

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:

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.

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.

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:

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?

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:

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.

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 parecido, veja:

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:

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.

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

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.

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 É Polimorfismo?

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:

 

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:

 

Agora para finalizar em modulo normal, vamos criar um método chamado Animal_EmitirSom e descrever em seu corpo o seguinte código:

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.

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?

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. 

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. 

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.

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

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. 

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!

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

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

 

Sobre o Autor

Welisson Silva
Welisson Silva

Analista de Sistemas, trabalha com TI desde 2014. Especializado em Vendas Online, desenvolvedor, programador, guitarrista e entusiasta de tudo que envolva tecnologia.