为什么对多维vba数组进行此简单分配会引发语法错误

时间:2018-08-07 21:21:48

标签: excel vba multidimensional-array

我正在尝试为Excel中的VBA中的二维整数数组分配两个整数“ 1”和“ 2”:

Dim arrPeople(4, 4) As Integer
arrPeople(0,0) = 1,2

我尝试将整数1保存到数组的第一个维度并将整数2保存到第一个数组项的第二个维度的行– arrPeople(0,0) = 1,2 –引发语法错误,我还没有找到告诉我原因的例子?

(我不是试图使用欧洲约定的小数点或任何小数点插入“ 1,2”或“ 1.2”。最终,我想将电子邮件地址存储在数组的一维中,以及另一个维度中来自网页URL的文章ID号,但认为将问题简化为仅存储整数会有所帮助。)

2 个答案:

答案 0 :(得分:2)

不能将两个值“ 1,2”分配给数组中的单个位置,例如(0,0)。我建议将1和2分别分配给它们的适当位置,就像:

arrPeople(0,0) = 1
arrPeople(1,0) = 2

答案 1 :(得分:0)

@elliotsvensson是正确的:没有一种方法可以将二维数组作为数据结构来完成您想要的操作。您可能需要其他数据结构。例如,Variant的一维数组可以在每个插槽中存储另一个一维数组,类似于C存储数组的方式:

Option Explicit
Option Base 0

Sub example()
    Dim arrPeople(4) As Variant
    arrPeople(0) = Array(1, 2)      ' Assign a whole row at once
    Debug.Print arrPeople(0)(0)     ' prints 1.  Note (0)(0) indexing rather than (0,0).
End Sub

作为另一个示例,要存储电子邮件地址和文章ID,可以使用Collection从其中一个映射到另一个。您可以将两个Collection用于双向地图。或者,正如您在对elliot答案的评论中指出的那样,可以使用两个一维数组。