2012-01-13 38 views
7

tôi cần để có thể tạo ra một newarray và gán nó vào another2darray (atsomeelement)Làm thế nào để gán một chiều của một mảng 2ngày để một mảng 1d mới trong VBA

Ví dụ

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

và bây giờ

array2(0) = array1 

và do đó

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

Bây giờ tôi muốn tạo một mảng mới và gán 1d của mảng2 cho nó.

newarray = array2(0) 

và do đó

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

tôi không thể làm điều này trong mã VBA.
Đoạn mã bên dưới, hoạt động nếu bạn nhận xét phần cuối cùng nơi tôi thử và chỉ định array2(1) đến 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

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

+1

Lưu ý rằng, về mặt kỹ thuật, bạn có * không * mảng 2d mà là mảng mảng. Đó là một cái gì đó khác nhau. (Cũng có các mảng 2d thực trong VBA.) – Heinzi

Trả lời

7

Bạn không thể gán cho một mảng có kích thước cố định. Tuyên bố nó như là một động.

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

Thật đơn giản. cảm ơn bạn. – Aden

+3

@Aden: Chào mừng bạn đến với stackoverflow, nếu câu trả lời này phù hợp với bạn, vui lòng chấp nhận câu trả lời bằng cách nhấp vào dấu kiểm ở bên trái câu trả lời - xem http://meta.stackexchange.com/questions/5234 để biết thêm thông tin – JMax

Các vấn đề liên quan