Don't you need $DYNAMIC to use REDIM?
$DYNAMIC defaults everything to REDIM status; without it, you have to declare your array redimmable from the start.
EXAMPLE:
DIM X(10)
REDIM X(100)
The above will error out. X isn't initially declared redimable, so you can't resize it.
EXAMPLE 2:
$DYNAMIC
DIM X(10)
REDIM X(100)
The above here works. $DYNAMIC defaults all arrays to be redimmable, so REDIM works with no issues.
EXAMPLE 3:
DIM X(10)
REDIM Y(10)
REDIM X(100)
REDIM Y(100)
Now here, we initialize X(10) with DIM, making it non-resizable. Y(10), however, we initialize with REDIM, making it resizable.
The REDIM X(100) will toss an error as we can't resize the array X().
On the other hand, there's no issue with resizing Y() to 100 elements.
If you DIM an array, it's non-resizable, UNLESS $DYNAMIC makes everything resizable.
If you use REDIM from the start, then your array begins resizable and remains that way forever more.