Cavalcante Consultores – treinamento e consultoria em finanças e Excel

Variáveis de objeto

Cavalcante Consultores > Biblioteca de Excel > Variáveis de objeto

O que são?

Variáveis de objeto fazem referência a objetos. Por este motivo, qualquer ação tomada sobre a variável afetará o objeto a que ela se refere. Ou seja, em outras palavras, uma variável de objeto deve ser tratada exatamente como o objeto ao qual ela está associada.

Declarando uma variável de objeto

Utilize as instruções Dim, Public ou Private para declarar uma variável de objeto. Ela pode ser do tipo Variant, do tipo Object ou de um tipo de objeto específico (Ex: Fonte, Gráfico, etc.).

Dim fonte1             ' Declara a variável fonte1 como tipo Variant.
Dim fonte1 As Object   ' Declara a variável fonte1 como tipo Object.
Dim fonte1 As Font     ' Declara a variável fonte1 como tipo Font.

Caso você não declare uma variável de objeto ou não especifique o tipo, a variável assumirá o tipo Variant, o que não é recomendado.

Utilize o tipo de dados Object para criar uma referência genérica a qualquer objeto, como por exemplo, em situações onde você só saberá o tipo de objeto específico após a execução do procedimento.

Caso conheça o tipo de objeto específico, declare a variável como sendo deste tipo específico. Isso evita erros no código, tornando o código mais rápido e mais simples.

Atribuindo uma variável de objeto a um objeto

Para atribuir um objeto a uma variável de objeto utilize a instrução Set. A partir desta declaração toda ação sobre a variável afeta o objeto a que ela se refere.

Set fonte1 = Sheets(2).Range("B5").Font   ' Atribui a referência.

A definição de uma variável de objeto como Nothing interrompe a sua associação. Todas as ações sobre a variável serão ignoradas.

Set fonte1 = Nothing       ' Interrompe a associação.

Você pode combinar a declaração de uma variável de objeto com a atribuição de um objeto a ele utilizando a palavra-chave New com a instrução Set.

Set fonte1 = New Font     ' Cria a variável e atribui a referência.

Referência à ocorrência atual de um objeto

A palavra-chave Me poderá ser usada dentro de um módulo de classe para fazer referência ao objeto que o módulo de classe representa (e onde o código está sendo executado). Assim, você poderá utilizar Me para passar informações sobre o objeto para um procedimento em outro módulo. Por exemplo, suponha que você possua o seguinte procedimento em um módulo:

Sub MudarFonte (objeto1 As Object)
    objeto1.Bold = False
End Sub

Neste caso, você pode chamar o procedimento e passar a ocorrência atual do objeto como um argumento usando a instrução a seguir:

MudarFonte Me

Exemplo

Neste exemplo iremos modificar os atributos de uma planilha usando uma variável de objeto do tipo Worksheet associada a segunda planilha da pasta de trabalho.

É possível usar a variável planilha no lugar do objeto, e a as ações sobre a variável afetam a planilha Plan2 associada. Todos os atributos do objeto Worksheet (Por exemplo: Range) se aplicam a variável planilha { planilha.Range(“B5”) }

Observe o código abaixo:

Sub mudar()

 Dim planilha As Worksheet   
 Set planilha = Worksheets(2)
 
 planilha.Unprotect 
 planilha.Activate  
  
 With planilha
   .Name = InputBox("Digite um novo nome para a 2ª planilha")
   .EnableSelection = xlUnlockedCells
   .Range("B5") = "Nome Sugerido: " & planilha.Name
   .Protect
 End With
 
 MsgBox "Nome alterado e planilha protegida."
  
End Sub

Pratique!