我希望下面的 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 行的数组,第 1 列是过程中使用的参数,第 2 列是时间戳。
此过程是从函数调用的,但该函数正在返回#VALUE!并且数组是空的。这段代码有什么问题?
最佳答案
您遇到了 VBA 数组的怪癖。您只能在二维中使用 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)
会导致错误。
如果您想以这种方式使用数组,则只需翻转尺寸即可。
关于arrays - Excel VBA : two dimensional array with variable and time stamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169949/