Como Usar Estruturas VBA
In this Article
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.
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.
Uso de uma Estrutura para Obter Dados de um Intervalo
Em nossa pasta de trabalho, temos a seguinte tabela de dados
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.
Estruturas Aninhadas
Considere as seguintes estruturas:
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.
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