ARRAY EM MODULO DE CLASSE

MOACIRPFAU 03/09/2007 22:35:31
#233954
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

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.
TUNUSAT 04/09/2007 08:24:31
#233971
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

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.
USUARIO.EXCLUIDOS 04/09/2007 08:38:20
#233974
Resposta escolhida
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.
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