I want my Sub procedure below to push the argument and the time stamp to a two-dimensional array every time it is executed.
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
So, basically I want to get an array with 2 columns and n rows, being column 1 the argument used in the procedure and column 2 the time stamp.
This procedure is being called from a Function but the function is returning #VALUE! and the array is empty. What is wrong with this code?
You've run into a quirk of VBA arrays. You can only augment a 2-D array with ReDim Preserve in the second dimension. That is,
n = n + 1
ReDim Preserve myArray(1 To 2, 1 to n)
will work, but
n = n + 1
ReDim Preserve myArray(1 To n, 1 To 2)
will result in an error.
You'll just have to work with your dimensions flipped if you want to use arrays in this way.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With