AJUDA COM PARAMARRAY

VBSHAR 28/08/2012 15:57:55
#408781
Boa tarde pessoal,

estou querendo passar um array por parametro mas não vai, alguém tem experiencia nisto?

segue codigo VB6 de exemplo:

Private Sub Form_Load()
Dim xBOL() As Variant
Dim Q As Long
Dim i As Long
[ô]CARREGANDO DADOS PARA TESTE
List1.AddItem [Ô]1[Ô]
List1.AddItem [Ô]2[Ô]
List1.AddItem [Ô]3[Ô]
List1.AddItem [Ô]4[Ô]
[ô]REDIMENSIONANDO ARRAY
ReDim xBOL(List1.ListCount) As Variant
[ô]LOOP PARA CARREGAR DADOS NO ARRAY
For i = 0 To List1.ListCount - 1
If List1.List(i) Mod 2 = 0 Then
xBOL(Q) = i
Q = Q + 1
End If
Next i
[ô]PASSAGEN DE DADOS PARA A FUNÇÃO
mostra_par xBOL() [ô]** AQUI ESTA O PROBLEMA, O CONTEÚDO DO ARRAY NÃO VAI ADIANTE **
End Sub
[ô]FUNÇÃO QUE QUER RECEBER O ARRAY E IMPRIMIR
Sub mostra_par(ParamArray xPar() As Variant)
Dim X As Variant
For Each X In xPar [ô]O ARRAY VEM VARIO, SEM NADA
Debug.Print CStr(X)
Next
End Sub
KERPLUNK 28/08/2012 16:07:18
#408782
Eu usaria uma Collection ao invés de Array:
  
Private Sub Form_Load()
[ô]CARREGANDO DADOS PARA TESTE
List1.AddItem [Ô]1[Ô]
List1.AddItem [Ô]2[Ô]
List1.AddItem [Ô]3[Ô]
List1.AddItem [Ô]4[Ô]
[ô]REDIMENSIONANDO ARRAY
Dim Colecao As Collection
Set Colecao = New Collection

For i = 0 To List1.ListCount - 1
If List1.List(i) Mod 2 = 0 Then
Colecao.Add (List1.List(i))
End If
Next i
MsgBox mostra_par(Colecao)
End Sub
[ô]FUNÇÃO QUE QUER RECEBER O ARRAY E IMPRIMIR
Function mostra_par(xPar As Collection)
Dim retorno As String
Dim X As Variant
For Each X In xPar [ô]O ARRAY VEM VARIO, SEM NADA
retorno = retorno & Str(X) & vbNewLine
Next
mostra_par = retorno
End Function
MARCELO.TREZE 28/08/2012 16:09:53
#408783
tenta esta alterações


Private Sub Form_Load()
Dim xBOL() As Variant
Dim Q As Long
Dim i As Long
[ô]CARREGANDO DADOS PARA TESTE
List1.AddItem [Ô]1[Ô]
List1.AddItem [Ô]2[Ô]
List1.AddItem [Ô]3[Ô]
List1.AddItem [Ô]4[Ô]
[ô]REDIMENSIONANDO ARRAY
ReDim Preserve xBOL(List1.ListCount) As Variant
[ô]LOOP PARA CARREGAR DADOS NO ARRAY
Q = 0
For i = 0 To List1.ListCount - 1
If (List1.List(i) Mod 2) = 0 Then
xBOL(Q) = i
Q = Q + 1
End If
Next i
[ô]PASSAGEN DE DADOS PARA A FUNÇÃO
mostra_par xBOL
End Sub

[ô]FUNÇÃO QUE QUER RECEBER O ARRAY E IMPRIMIR

Sub mostra_par(xPar() As Variant)
Dim X As Variant
For Each X In xPar [ô]O ARRAY VEM VARIO, SEM NADA
MsgBox CStr(X)
Next
End Sub

Tópico encerrado , respostas não são mais permitidas