2012-11-16 54 views
0

假設您從數據庫中獲取一個數組的維數。這將是這個樣子:"[1][2][1]"現在你有一個對應的值,我們稱過b如何用其他動態數組或值混合填充動態數組?

我要創建這種格式的數組:(x,(B))

如果另一個價值,我們稱之爲有此Dimension -STRING:[1][1],該陣列應填寫像這樣:(A,(B))

,如果偶然有名爲C與字符串[1][2][2]另一個值數組應該是這樣的:(A,(B,C))

我想到類似的東西:

Redim Array1(1) 
Redim Array2(1) 
Array1(0) = A 
Array2(0) = B 
Array2(1) = C 
Array1(1) = Array2() 

但是,在一個動態的方式。在我看來,vba不支持嵌套數組。 不幸的是多維數組無法工作,因爲「維度」不一致。任何幫助讚賞

編輯: 嘗試:

c = 0 
dim array1() as Variant 
redim preserve array1(c) 
array1(c) = split(mid("[1][4]",2,len("[1][4]")-2),"][") 

,它給了我一個類型不匹配錯誤

+0

在Access中,數組的簡單解決方案通常是一個表格。 – Fionnuala

+0

對不起,我既不能創建也不能更改表或數據庫,我只是應該返回一個文本文件與數據庫中的值。我需要處理所有的數據,以達到預設的人機和機器可讀格式。對不起,但其餘的東西,即使我不知道 – Vogel612

+0

如何斷開連接的記錄集? - http://support.microsoft.com/kb/184397 – Fionnuala

回答

1

這工作:

Private Sub testArray() 
    Dim DynamicArray1() As Variant 
    Dim DynamicArray2() As Variant 

    ReDim DynamicArray1(1) 
    ReDim DynamicArray2(1) 
    DynamicArray1(0) = "A" 

    DynamicArray2(0) = "B" 
    DynamicArray2(1) = "C" 

    DynamicArray1(1) = DynamicArray2 
End Sub 

Sub test2() 
    Dim c As Integer: c = 0 
    Dim array1() As Variant 
    ReDim Preserve array1(c) 
    array1(c) = Split(Mid("[1][4]", 2, Len("[1][4]") - 2), "][") 
End Sub 
+0

不幸我也不知道我會需要多少陣列。維度串可以是幾乎任何東西。第一個「數字」將始終爲1,但所有其他的東西都是「隨機的」 – Vogel612

+0

是的,它的工作原理,但我仍然有問題,嵌套數組的數量是未知的,嵌套數組可以嵌套另一個數組 – Vogel612

0

在VBA窩陣列可以。你只需要確保父數組是一個變體數組。任何「孩子」數組可以是任何你想要的類型。在這種情況下,父數組的元素仍然是變體,但變體恰好是數組。下面是一個如何使用這個方法的例子:

Dim array1(1) 
Dim array2(1 To 2) As String 
array2(1) = "Hello" 
array2(2) = "World" 
array1(1) = array2 
'Usage explanation: 
'array1(1) returns the first element of parent array 
'array1(1)(1) returns the first element of the returned element. 
MsgBox array1(1)(1) & " " & array1(1)(2) 
0

你總是可以收藏/字典,而不是數組,他們沒有被輸入,並根據需要

擴大