"Some code has to go through each combination (one selection from each column), and I would like to save the results in a multidimensional array."
To begin with, I will transfer the desired Range object to Variant.
Dim vArray as Variant '--as per your defined Sheet, range 'this creates a two dimensional array vArray = ActiveWorkbook.Sheets("Sheet1").Range("A1:Z300").Value2
You can then iterate through this array to find the size you need and the data you can store in the array (with the dimensions) you need.
Little background:
Redim: reallocates space to store an array variable.
You are not allowed to reinstall the array if you first define an array with a Dim statement. (e.g. Dim vArray(1 to 6) As Variant ).
UPDATE : explicitly indicate what is allowed and what is not in Redim.

Each time you use Redim , it resets the original Array to the parameters that you define later.
There is a way to save your data with Redim Preserve , but it only allows you to change the last dimension of a multidimensional array, where the first dimension remains as the original.
source share