2010-10-05 119 views
0

我已经多次搜索这个问题,但我找不到有效的东西。
我想声明一个长度未指定的数组(arrArr)数组。实际上,我使用Excel:如果工作表存在,请取出其数组并将其存储在数组数组中。 我宣布这个arrArr这样,程序基本的工作原理是这样的:如何声明一个数组数组?

dim arrArr as Variant 
if sheetIsFound then 
    sheetsFound = sheetsFound + 1 
    arrArr(sheetsFound) = arrayOfTheSheet 
end if 

,但它不工作:调试说,数组为空。我的(病态)逻辑有什么问题?

谢谢

+0

我认为这是你的Varient对象是问题。你有没有想过使用列表而不是数组?并有清单的列表?或者是否有使用数组数组的特殊原因? – jimplode 2010-10-05 09:18:08

+0

是的,Variant绝对是问题,但是这个工作:Dim vaTest As Variant; vaTest = Array(Array1,array2)。我使用数组的数组,因为它似乎是一个方便的方法来比较arrArr的每个数组的值,因为我不能像PHP那样创建变量:$ {“array”。 $ numberOfTheArray} = $ thisArray – Coronier 2010-10-05 09:28:48

+1

在分配元素之前,必须将Variant作为数组进行Dim/Redim变体。该变体会很乐意接受被分配为一个数组,但如上面写的那样,数组将没有维数(没有元素)。 – Bob77 2010-10-05 23:29:16

回答

4

当你说dim arrArr(),数组没有界限。你必须将其重新设为你想要的数字。如果要保留现有项目,则需要使用preserve关键字。您可以添加手表并逐步查看代码,以查看每个步骤中发生的情况。

试试这个:

Dim arrArr() As Variant 
ReDim arrArr(0) 'make an array with 1 item 
If sheetIsFound Then 
    sheetsFound = sheetsFound + 1 
    ReDim Preserve arrArr(0 To (UBound(a) + 1)) 'add an index to the array 
    arrArr(UBound(a)) = arrayOfTheSheet ' add the array to the new index in arrArr 
End If 

要访问数组,使用语法arrArr(0),arrArr(1)等

这个页面有一些例子,如果你需要更多的帮助:http://www.brainbell.com/tutors/Visual_Basic/Arrays.htm

+0

谢谢,那就是我一直在寻找的东西。和非常直观的教程。 – Coronier 2010-10-06 20:26:06