The only thing about REDIM is you really shouldn't make it incremental inside a loop -- it slows execution too much.
FOR I = 1 TO 100000
REDIM x(I) AS LONG
NEXT
The above is a bad practice and will lag your code considerably as it builds a new block of memory and frees the old one, over and over and over. Add _PRESERVE to the mix and it gets even worse as it moves data from one block to the other, over and over...
A much better process is:
FOR I = 1 TO 100000
IF I > UBOUND(X) THEN REDIM X(I + 1000) AS LONG
NEXT
With the above, you'll move and free memory 1/1000th as many times as before -- which will save you a ton of lag/slowdown in your programs.
(And, if total memory is an issue, resize the array down to the size you need once you exit the loop.)
Resizing inside loops work for small loops, but it's a bad habit to get into. It's better to raise your bounds a lot once, and then resize down, than it is to resize them over and over and over and over again...