ARRAY EM MODULO DE CLASSE
Quando faço estas funções dentro de um formulario funciona bem.
O array que é preenchido pela 1º função retorna os valores nele contido quando chamo a 2º função.
EX:
Dim Arr1() As String
'Para chamar a função.
Mas quando coloco em um modulo de classe a 1º função preenche o array, mas a 2º não retorna o meu array, acho que é um problema de declaração mas não sei como resolver e se é realmente este problema.
Ex de chamar a classe.
o que esta dentro do modulo de classe é o mesmo código anterior.
Precisava disso urgente.
obrigado pelo apoio de sempre.
O array que é preenchido pela 1º função retorna os valores nele contido quando chamo a 2º função.
EX:
Dim Arr1() As String
Public Function Funcao1()
ReDim Preserve Arr1(1, 2)
Arr1(0, 0) = "CASA"
Arr1(1, 0) = "APARTAMENTO"
Arr1(0, 1) = "MOTO"
Arr1(1, 1) = "CARRO"
End Function
Public Function Funcao2()
Debug.Print Arr1(0, 0)
Debug.Print Arr1(1, 0)
Debug.Print Arr1(0, 1)
Debug.Print Arr1(1, 1)
End Function
'Para chamar a função.
Private Sub Command1_Click()
Funcao1
end Sub
Private Sub Command2_Click()
Funcao2
end Sub
Mas quando coloco em um modulo de classe a 1º função preenche o array, mas a 2º não retorna o meu array, acho que é um problema de declaração mas não sei como resolver e se é realmente este problema.
Ex de chamar a classe.
Private Sub Command1_Click()
Dim Cls As Class
Set Cls = New Class
Cls.Funcao1
end Sub
Private Sub Command2_Click()
Dim Cls As Class
Set Cls = New Class
Cls.Funcao2
end Sub
o que esta dentro do modulo de classe é o mesmo código anterior.
Precisava disso urgente.
obrigado pelo apoio de sempre.
MOACIRPFAU,
Tem um problema aqui ... quando vc saiu da classe os valores da array foram perdidos ... estou certo?
Você pode pedir para que a Função2 chame a Função1 antes de rodar ... assim:
==================
Option Explicit
Private arr1() As String
==================
O problema nem é de retorno, pois nenhuma destas funções retorna seu conteúdo para os chamadores ... se quiser posso exemplificar isto tb ...
[]'s,
Tunusat.
Tem um problema aqui ... quando vc saiu da classe os valores da array foram perdidos ... estou certo?
Você pode pedir para que a Função2 chame a Função1 antes de rodar ... assim:
==================
Option Explicit
Private arr1() As String
Public Function Funcao1()
ReDim Preserve arr1(1, 2)
arr1(0, 0) = "CASA"
arr1(1, 0) = "APARTAMENTO"
arr1(0, 1) = "MOTO"
arr1(1, 1) = "CARRO"
End Function
Public Function Funcao2()
Funcao1
Debug.Print arr1(0, 0)
Debug.Print arr1(1, 0)
Debug.Print arr1(0, 1)
Debug.Print arr1(1, 1)
End Function
==================
O problema nem é de retorno, pois nenhuma destas funções retorna seu conteúdo para os chamadores ... se quiser posso exemplificar isto tb ...
[]'s,
Tunusat.
Amigo,
Conhece algo de orientação a objeto??
Basicamente seu problema é de objeto...
vou tentar explicar...
No Command1, vc instância um objeto e chama a função 1.
Já no Command2 vc instância outro Objeto da sua classe. e chama a função 2.
Ou seja, a classe do Command2, não tem nada no Array pois é um Objeto DIFERENTE do criado no command1, e não foi chamada a funcao1 deste objeto.
Se vc fizer assim irá funcionar!!!
Ou então assim:
declare o objeto no General:
Não sei se consegui explicar, minha didática é péssima pra essas coisas...
[/c]
Conhece algo de orientação a objeto??
Basicamente seu problema é de objeto...
vou tentar explicar...
No Command1, vc instância um objeto e chama a função 1.
Private Sub Command1_Click()
Dim Cls As Class
Set Cls = New Class
Cls.Funcao1
end Sub
Já no Command2 vc instância outro Objeto da sua classe. e chama a função 2.
Private Sub Command2_Click()
Dim Cls As Class
Set Cls = New Class
Cls.Funcao2
end Sub
Ou seja, a classe do Command2, não tem nada no Array pois é um Objeto DIFERENTE do criado no command1, e não foi chamada a funcao1 deste objeto.
Se vc fizer assim irá funcionar!!!
Private Sub Command1_Click()
Dim Cls As Class
Set Cls = New Class
Cls.Funcao1
Cls.Funcao2
end Sub
Ou então assim:
declare o objeto no General:
Dim Cls As New Class
[c]Private Sub Command1_Click()
Cls.Funcao1
end Sub
Private Sub Command2_Click()
Cls.Funcao2
end Sub
Não sei se consegui explicar, minha didática é péssima pra essas coisas...
[/c]
Tópico encerrado , respostas não são mais permitidas