Páginas

quinta-feira, 17 de fevereiro de 2011

Orientação a Objetos no VBA - Parte I

Nativamente falando o VB não é uma linguagem orientada a objetos.

Neste primeiro post relacionado a classes irei demonstrar como podemos utilizar o conceito de orientações a objeto no VBA.

Bom vamos lá.

O primeiro passo , é a criação de uma nova pasta de trabalho, nela pressionando ALT+F11 entraremos no editor do visual basic, nosso ambiente de trabalho!

No menu Inserir , selecione Módulo e Módulo de Classe, neste exemplo trabalharei com os nomes criados automaticamente Módulo1 e Classe1 respectivamente.

Clique duas vezes sobre Classe1 e insira o seguinte código, nele definimos as propriedades GET e LET do nosso objeto. Propriedades são as características dos objetos que criamos e suas ações são chamadas de métodos.

'Desenvolvido por Bruno Leite
'bruno_silva_leite@yahoo.com.br
'http://officevb.com

Private WithEvents wb As Workbook

'Retornando o Workbook Aberto
Public Property Get MyWb() As String
      MyWb = wb
End Property
'definindo o Workbook Selecionado
Public Property Let MyWb(wbName As String)
      Set wb = Workbooks.Open(wbName)
End Property

'Capturando o Evento
Private Sub wb_BeforeClose(Cancel As Boolean)
      MsgBox "Fechando o Arquivo", vbInformation
End Sub

'Capturando o Evento
Private Sub wb_NewSheet(ByVal Sh As Object)
      MsgBox "Inserindo Planilha", vbInformation
End Sub
'Capturando o Evento
Private Sub wb_SheetActivate(ByVal Sh As Object)
      MsgBox "Você Ativou a planilha " & Sh.Name, vbInformation
End Sub

'Capturando o Evento
Private Sub wb_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      MsgBox "Alteração realizada na Planilha " & Sh.Name & " no endereço " & Target.Address
End Sub

Repare que a primeira linha contém a seguinte declaração

Private WithEvents wb As Workbook

Esta declaração permite que utilizemos o Combo com as opções disponíveis para o objeto que criamos como mostra a seguinte imagem.





Tudo bem , temos a nossa classe1, porém sem uma implementação sua ela não nos servirá de nada, é isto que faremos com o código a seguir no módulo1.

'Desenvolvido por Bruno Leite
'bruno_silva_leite@yahoo.com.br
'http://officevb.com

Dim myClass As New Classe1

Sub AbreWB()
Dim Arq As Variant

'Solicitando um arquivo
Arq = Application.GetOpenFilename

'Verificando se foi selecionada alguma pasta de trabalho
If Arq = False Then Exit Sub

'Instanciando um novo Arquivo em nossa Classe1
myClass.MyWb = Arq

End Sub


Agora que temos a implementação iremos executar a rotina AbreWB (pressione F5 dentro da mesma), ao executá-la será solicitada a seleção de um arquivo, selecione qualquer arquivo excel em sua máquina, e trabalhe com ele como teste. Troque de planilhas, insira uma nova planilha, faça alterações em células.

O que aconteceu? Todos os eventos realizados na pasta de trabalho selecionada por você foram capturados pela nossa Classe1, que nos indicou as mensagens que havíamos criado em seu código como a seguinte imagem.



Achou complexo?

Logo voltarei com outros conceitos de orientação a objetos no Excel, mostrando exemplos de herança e Polimorfismo que os céticos dirão que não é possível, em breve verão que é..rs

Dúvidas postem nos comentários...

Até lá...

3 comentários:

José Arnaldo disse...

Muito interessante.

Unknown disse...

Você poderia me recomendar um bom livro de VBA?

Gostaria de algo sólido, um livro pra quem já é programador. Ou seja, não precisa ser algo "For Dummies".

Obrigado.

Bruno Leite disse...

Cara um livro bom e barato é este

http://www.juliobattisti.com.br/loja/detalheproduto.asp?CodigoLivro=CEXC000062

Boa sorte com os estudos

[]'s

Postar um comentário

Related Posts Plugin for WordPress, Blogger...