Como Usar Estruturas VBA

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on September 12, 2023

Este tutorial demonstrará como usar estruturas no VBA.

Uma estrutura no VBA é essencialmente um tipo de dados definido pelo usuário. Quando usamos variáveis no VBA, podemos declará-las como variáveis de string, variáveis de número etc. A criação de uma estrutura cria essencialmente um novo tipo de variável; a própria estrutura pode conter vários tipos de dados. Muitos usos do Excel utilizam módulos de classe em vez de estruturas, mas isso pode significar que você acaba com uma quantidade desnecessária de módulos de classe individuais.

Definição de uma Estrutura

Uma estrutura começa com a palavra Type e termina com End Type.

Type Cliente
 ClieNome As String
 ClieFone As String
 ClieEndereco As String
 ClieRep As String
End Type

Para usar essa estrutura em um procedimento, podemos fazer o seguinte:

Sub ClieTeste ()
 Dim strC As Cliente
 strC.ClieNome = "Fred Jones"
 strC.ClieEndereco = " 123 Oak Lane, Cleveland"
 strC.ClieFone = "4589341"
 strC.ClieRep = "Jim"
End Sub

Um tipo é essencialmente uma forma de agrupar variáveis que estão relacionadas entre si, como os detalhes do cliente acima.

Uma estrutura precisa ser armazenada em um módulo e precisa estar na parte superior do módulo, onde as variáveis do módulo seriam armazenadas.

preencher estrutura topo

Uma estrutura não pode ser armazenada em um módulo de classe ou de formulário. Se você armazenasse o tipo no módulo de classe e tentasse chamar o tipo de um módulo ou mesmo de dentro dessa classe, ocorreria um erro.

estrutura em classe erro

Uso de uma Estrutura para Obter Dados de um Intervalo

Em nossa pasta de trabalho, temos a seguinte tabela de dados

tabela empregados exemplo

Agora podemos criar uma estrutura em um novo módulo para armazenar o nome do empregado, a idade e a descrição da função.

Type Empregados
   EmpNome As String
   EmpIdade As Integer
   EmpFuncao As String
End Type

Agora podemos criar uma rotina para percorrer um intervalo no Excel e preencher o tipo com vários funcionários.

Sub ObterEmpregados()
  Dim Empregado() As Empregados
  Dim i As Integer
  ReDim Empregado(10)
  For i = 0 To 9
     Empregado(i).EmpNome = Range("B" & i + 2)
     Empregado(i).EmpIdade = Range("C" & i + 2)
     Empregado(i).EmpFuncao = Range("D" & i + 2)
  Next i
'mostrar na janela de verificação imediata
  For i = 0 To 9
     Debug.Print (Empregado(i).EmpNome & " tem " & Empregado(i).EmpIdade & " anos de idade e trabalha como " & Empregado(i).EmpFuncao)
  Next i
End Sub

Primeiro, declaramos uma matriz de variáveis como uma variável Empregados. Em seguida, dimensionamos a matriz e fazemos um loop em um intervalo de células em uma pasta de trabalho do Excel para preencher a matriz. Em seguida, enviamos os resultados para a janela de verificação imediata.

estrutura resultado empregados

Estruturas Aninhadas

Considere as seguintes estruturas:

estrutura aninhada empregado cliente

Agora, vamos criar uma terceira estrutura abaixo dessas 2:

Type Fatura
  FatRep As Empregados
  FatClie As Cliente
End Type

Onde a variável FatRep foi definida como um tipo de variável Empregados, enquanto a variável FatClie foi definida como um tipo de variável Cliente.

Portanto, podemos detalhar o nosso procedimento para preencher algumas variáveis.

Quando criarmos nosso procedimento, aparecerá uma lista suspensa mostrando as variáveis disponíveis em cada tipo.

exemplo intellisense fatura

Portanto, podemos preencher nossas variáveis conforme mostrado no procedimento a seguir

Sub ObterInfo()
  Dim strFat As Fatura
  strFat.FatClie.ClieNome = "Bob Smith"
  strFat.FatClie.ClieEndereco = "123 Oak Lane, Cleveland"
  strFat.FatRep.EmpNome = "Fred Lindburgh"
  strFat.FatRep.EmpFuncao = "Gerente de Vendas"
End Sub
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA