Visual Basic para Aplicaciones - Problema recuperar array de una función

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema recuperar array de una función

Publicado por hecram (1 intervención) el 03/07/2018 18:12:40
Buenas tardes,

Llevo horas intentando recuperar en una variable el array devuelto por una función sin éxito. Me arroja error '6' "Desbordamiento". Claro no puedo hacer Redim porque desconozco cuantos elementos tienen el valor devuelto. En definitiva hay algo que no entiendo bien y no encuentro información correcta en la red excepto esta:
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/232-funcion-de-tipo-array.htm Pero a mi no me sirve.

Os agradecería que me pudieseis ayudar:

Mi función:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function proy_summarise(ot As Integer) As String()
 
    Dim proy() As String
    Dim a As Integer
    a = 1
    Set BBDD_proy = ActiveWorkbook.Worksheets("BBDD").ListObjects("BBDD_PROY")
 
    For i = 1 To BBDD_proy.ListRows.Count
        If BBDD_proy.DataRangeBody.Range(i, 2).Value2 = ot Then
            ReDim Preserve proy(1 To a)
 
            proy(a, 1) = CStr(BBDD_proy.DataRangeBody.Range(i, 2).Value2) & "-" & CStr(BBDD_proy.DataRangeBody.Range(i, 3).Value2) & "-" & CStr(BBDD_proy.DataRangeBody.Range(i, 5).Value2) & "-" & CStr(BBDD_proy.DataRangeBody.Range(i, 6).Value2)
 
            a = a + 1
        End If
    Next i
 
    proy_summarise = proy
 
End Function


E INTENTO UTILIZARLA EN UN FORMULARIO QUE MUESTRE LOS RESULTADOS EN LISTBOX1:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Buscar_OT_Click()
    Dim proy() As String
 
    proy = Módulo1.proy_summarise(Me.TextBox1.Value) ' AQUI ERROR "DESBORDAMIENTO"
 
    For i = LBound(proy) To UBound(proy)
        With Me.ListBox1
            AddItem proy(i)
        End With
    Next i
 
End Sub

Muchas gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema recuperar array de una función

Publicado por Antoni Masana (498 intervenciones) el 05/07/2018 10:39:37
En el tu código veo varios errores.

Prime código

Línea 1 - Puedes poner que devuelve Variant o nada:

1
Function proy_summarise(ot As Integer) As Variant
o
1
Function proy_summarise(ot As Integer)

Línea 10 - Defines la tabla de una dimensión.
Linea 12 - La tabla la usas con dos dimensiones

Segundo codigo

Linea 2 - Define la variable proy como Variant


Te pongo un ejemplo que funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function divApellido(ByVal surnames As String)
    Dim apellidos(1), valor() As String
    valor = Split(surnames, " ")
    apellidos(0) = valor(0)
    apellidos(1) = valor(1)
    divApellido = apellidos
End Function
 
Sub Macro()
    Dim apellidos() As Variant
       apellidos = divApellido("Garcia Lopez")
 
       MsgBox apellidos(0)
       MsgBox apellidos(1)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar