Excel VBA:具有variables和时间戳的二维数组

我希望下面的Sub过程将参数和时间戳每次执行时推送到一个二维数组。

Public Dim myArray() As Variant Public Sub mySub(argument) n = n + 1 //other code here ReDim Preserve myArray(1 To n, 1 To 2) myArray(n, 1) = argument myArray(n, 2) = DateTime.Now() End Sub 

所以,基本上我想获得一个2列和n行的数组,第一列是过程中使用的参数,第二列是时间戳。

这个过程被一个函数调用,但函数返回#VALUE! 数组是空的。 这段代码有什么问题?

你遇到了一个VBAarrays的怪癖。 您只能在第二维中使用ReDim Preserve来扩充二维数组。 那是,

 n = n + 1 ReDim Preserve myArray(1 To 2, 1 to n) 

会工作,但是

 n = n + 1 ReDim Preserve myArray(1 To n, 1 To 2) 

将导致错误。

如果你想以这种方式使用数组,你只需要翻转你的尺寸。