Please, try the next way, in order to fill an already dimensioned 2D array, easy to drop its content in a range:
Sub fill2DArray()
Dim Array1(1 To 10, 1 To 1), ws As Worksheet, i As Long
Set ws = ActiveSheet
For i = 0 To 9
Array1(i + 1, 1) = Int((6 * Rnd) + 1)
Next
ws.Range("A1").Resize(UBound(Array1), UBound(Array1, 2)).value = Array1
End Sub
Transpose has some limitations when used on large ranges.
The next version is your corrected code, but avoiding using ReDim Preserve for each iteration, which stresses the system memory if used too often:
Sub fill1DEfficient()
Dim Array1(), i As Long, ws As Worksheet, itNo As Long
Set ws = ActiveSheet
itNo = 10 'number of iterations
ReDim Array1(itNo - 1)
For i = 0 To itNo - 1
Array1(i) = Int((6 * Rnd) + 1)
Next
ws.Range("A1").Resize(UBound(Array1) + 1, 1).value = Application.Transpose(Array1)
End Sub
ReDim Preserveused often is a kind of memory stress...Resizeto get this workingResizemust be used, anyhow... I will post an answer only to see what I wonted suggesting.