Notifications
Clear all

Como fazer uma variável composta heterogênea no VBA

6 Posts
3 Usuários
0 Reactions
1,968 Visualizações
(@anonimo20)
Posts: 12
Eminent Member
Topic starter
 

Bom dia pessoal!

Gostaria de saber como faço uma variável composta heterogênea no VBA, ou seja uma variável que englobe um conjunto de dados que no exemplo abaixo chamo de registro.

'Definição do tipo registro
tipo Regproduto = registro
inteiro: Cod;
caracter: Nome;
real: Preço;
fimregistro

Não achei nada na internet por isso criei o tópico, se alguém puder me ajudar serei muito grato!

 
Postado : 21/09/2017 8:31 am
Syrax
(@syrax)
Posts: 160
Estimable Member
 

anonimo20,

Veja se isso te ajuda

a ideia seria usar arrays para guardar as informações

Sub teste()
Dim registro() As String, registro1 As String
registro1 = "tipo Regproduto = registro;inteiro: Cod;caracter: Nome;real: Preço"
 registro = Split(registro1, ";")
   For i = 0 To UBound(registro())
     Debug.Print registro(i)
     Next i
End Sub

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 21/09/2017 9:19 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

anonimo20,

Boa tarde!

Você pode utilizar o comando Type End Type para criar seu próprio tipo de variável e depois ´só declarar, no seu código, uma variável do tipo que você criou.

Para verificar essa minha sugestão, veja o exemplo no arquivo anexo.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 21/09/2017 12:03 pm
(@anonimo20)
Posts: 12
Eminent Member
Topic starter
 

wagner

Era exatamente isso, muito obrigado!!!

 
Postado : 22/09/2017 4:02 am
Syrax
(@syrax)
Posts: 160
Estimable Member
 

wagner

O uso do Type é uma boa ideia, mas o que distingue o use do Type, para variáveis normais?
eu sei a diferença, mas nesse caso, não houve muita diferença entre os dois

Sub OutroTeste()
    Dim i As Integer, a As String, b As Integer, c As Integer
    
    
    For i = 2 To 6
        a = Range("A" & i).Value
        b = Range("B" & i).Value
        c = Range("C" & i).Value
        MsgBox a & vbCrLf & b & vbCrLf & c
    Next
End Sub

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 22/09/2017 8:13 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Syrax,

Boa tarde!

Nesse caso, especificamente, não vai fazer muita diferença mesmo, além de você ter que declarar variável por variável, cada um com seu tipo (considerando que você utilize Option Explicit, para obrigar o VBA a só aceitar variáveis declaradas. É uma boa prática de programação declarar as variáveis e seus tipo apropriados para evitar bugs, principalmente em códigos com muitas procedures, muitas variáveis e muitas constantes, locais, de módulo, de formulário e globais.

Uma outra boa prática em programação é não utilizar variáveis do tipo Variant (ou sem declaração). No VBA, por exemplo, muitas vezes isso causa problemas quando se tentar fazer algumas conversões com as funções de conversão.

Desse modo, dependendo da complexidade e do uso que ser quer fazer, é uma boa ideia declarar uma variável composta com o comando Type, uma vez que além de não precisar mais se preocupar com os tipos dos dados que serão recebidos, ainda temos a ajuda do IntelliSense em cada componente da variável.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 22/09/2017 11:15 am