2012-01-13 22 views
7

Necesito ser capaz de crear un newArray y asignarlo a another2darray (atsomeelement)Cómo asignar una dimensión de una matriz 2D a una nueva matriz 1d en VBA

Ejemplo

array1(0) = 1 
array1(1) = 2 

y ahora

array2(0) = array1 

y por lo tanto

array2(0)(0) = 1 
array2(0)(1) = 2 

Ahora quiero tomar hacer una nueva matriz y asignarle 1d de la matriz2.

newarray = array2(0) 

y por lo tanto

newarray(0) = 1 
newarray(1) = 1 

No puedo hacer esto en código VBA.
Fragmento de código a continuación, funciona si comenta la última sección donde intento y asigno array2(1) a arraynew.

Function test() 
    Dim array1(0 To 20) As String 
    Dim array2(0 To 5) As Variant 
    Dim count As Integer 

    For count = 0 To UBound(array1) 
    array1(count) = count 
    Next count 

    'now that array1 is filled i want to insert it into array2(1) 
    array2(1) = array1 

    ' test 
    MsgBox (array2(1)(3)) 

    'now i want to create a new string array and assign it to array2(1) 
    Dim arraynew(0 To 20) As String 
    arraynew = array2(1) 
    'this is what fails. 

End Function 
+0

Ver http://stackoverflow.com/q/8482759/641067 – brettdj

+1

Tenga en cuenta que, técnicamente, lo que tienes es * no * es una matriz 2D, pero una matriz de matrices. Eso es algo diferente. (También hay arreglos en 2D reales en VBA). – Heinzi

Respuesta

7

No se puede asignar a una matriz de tamaño fijo. Declararlo como uno dinámico.

Dim arraynew() As String 
arraynew = array2(1) 
+0

Tan simple. gracias. – Aden

+3

@Aden: Bienvenido a stackoverflow, si esta respuesta le conviene, acéptela haciendo clic en la marca de la izquierda de la respuesta; consulte http://meta.stackexchange.com/questions/5234 para obtener más información. – JMax

Cuestiones relacionadas