Sub CartesianProduct(MatrixSheet As Worksheet)
Dim startrange As range
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, g As Integer, h As Integer, i As Integer, j As Integer
Dim x As Integer, z As Integer
x = Worksheets("Sheet1").range("D2")
z = 0
Select Case x
Case 1
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
array1 = [range1]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
z = z + 1
startrange.range("C2").Offset(z, 0).Value = array1(a, 1)
Next a
Case 2
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
array1 = [range1]
array2 = [range2]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
Next b
Next a
Case 3
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
Next c
Next b
Next a
Case 4
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
range4 = Application.InputBox(Prompt:="Please Select Range 4", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
array4 = [range4]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
For d = 1 To UBound(array4)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
startrange.Offset(z, 3).Value = array1(d, 1)
Next d
Next c
Next b
Next a
Case 5
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
range4 = Application.InputBox(Prompt:="Please Select Range 4", Type:=8)
range5 = Application.InputBox(Prompt:="Please Select Range 5", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
array4 = [range4]
array5 = [range5]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
For d = 1 To UBound(array4)
For e = 1 To UBound(array4)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
startrange.Offset(z, 3).Value = array1(d, 1)
startrange.Offset(z, 3).Value = array1(e, 1)
Next e
Next d
Next c
Next b
Next a
Case 6
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
range4 = Application.InputBox(Prompt:="Please Select Range 4", Type:=8)
range5 = Application.InputBox(Prompt:="Please Select Range 5", Type:=8)
range6 = Application.InputBox(Prompt:="Please Select Range 6", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
array4 = [range4]
array5 = [range5]
array6 = [range6]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
For d = 1 To UBound(array4)
For e = 1 To UBound(array4)
For f = 1 To UBound(array4)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
startrange.Offset(z, 3).Value = array1(d, 1)
startrange.Offset(z, 3).Value = array1(e, 1)
startrange.Offset(z, 3).Value = array1(f, 1)
Next f
Next e
Next d
Next c
Next b
Next a
Case 7
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
range4 = Application.InputBox(Prompt:="Please Select Range 4", Type:=8)
range5 = Application.InputBox(Prompt:="Please Select Range 5", Type:=8)
range6 = Application.InputBox(Prompt:="Please Select Range 6", Type:=8)
range7 = Application.InputBox(Prompt:="Please Select Range 7", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
array4 = [range4]
array5 = [range5]
array6 = [range6]
array7 = [range7]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
For d = 1 To UBound(array4)
For e = 1 To UBound(array4)
For f = 1 To UBound(array4)
For g = 1 To UBound(array4)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
startrange.Offset(z, 3).Value = array1(d, 1)
startrange.Offset(z, 3).Value = array1(e, 1)
startrange.Offset(z, 3).Value = array1(f, 1)
startrange.Offset(z, 3).Value = array1(g, 1)
Next g
Next f
Next e
Next d
Next c
Next b
Next a
Case 8
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
range4 = Application.InputBox(Prompt:="Please Select Range 4", Type:=8)
range5 = Application.InputBox(Prompt:="Please Select Range 5", Type:=8)
range6 = Application.InputBox(Prompt:="Please Select Range 6", Type:=8)
range7 = Application.InputBox(Prompt:="Please Select Range 7", Type:=8)
range8 = Application.InputBox(Prompt:="Please Select Range 8", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
array4 = [range4]
array5 = [range5]
array6 = [range6]
array7 = [range7]
array8 = [range8]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
For d = 1 To UBound(array4)
For e = 1 To UBound(array4)
For f = 1 To UBound(array4)
For g = 1 To UBound(array4)
For h = 1 To UBound(array4)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
startrange.Offset(z, 3).Value = array1(d, 1)
startrange.Offset(z, 3).Value = array1(e, 1)
startrange.Offset(z, 3).Value = array1(f, 1)
startrange.Offset(z, 3).Value = array1(g, 1)
startrange.Offset(z, 3).Value = array1(h, 1)
Next h
Next g
Next f
Next e
Next d
Next c
Next b
Next a
Case 9
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
range4 = Application.InputBox(Prompt:="Please Select Range 4", Type:=8)
range5 = Application.InputBox(Prompt:="Please Select Range 5", Type:=8)
range6 = Application.InputBox(Prompt:="Please Select Range 6", Type:=8)
range7 = Application.InputBox(Prompt:="Please Select Range 7", Type:=8)
range8 = Application.InputBox(Prompt:="Please Select Range 8", Type:=8)
range9 = Application.InputBox(Prompt:="Please Select Range 9", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
array4 = [range4]
array5 = [range5]
array6 = [range6]
array7 = [range7]
array8 = [range8]
array9 = [range9]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
For d = 1 To UBound(array4)
For e = 1 To UBound(array4)
For f = 1 To UBound(array4)
For g = 1 To UBound(array4)
For h = 1 To UBound(array4)
For i = 1 To UBound(array4)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
startrange.Offset(z, 3).Value = array1(d, 1)
startrange.Offset(z, 3).Value = array1(e, 1)
startrange.Offset(z, 3).Value = array1(f, 1)
startrange.Offset(z, 3).Value = array1(g, 1)
startrange.Offset(z, 3).Value = array1(h, 1)
startrange.Offset(z, 3).Value = array1(i, 1)
Next i
Next h
Next g
Next f
Next e
Next d
Next c
Next b
Next a
Case 10
range1 = Application.InputBox(Prompt:="Please Select Range 1", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Range 2", Type:=8)
range3 = Application.InputBox(Prompt:="Please Select Range 3", Type:=8)
range4 = Application.InputBox(Prompt:="Please Select Range 4", Type:=8)
range5 = Application.InputBox(Prompt:="Please Select Range 5", Type:=8)
range6 = Application.InputBox(Prompt:="Please Select Range 6", Type:=8)
range7 = Application.InputBox(Prompt:="Please Select Range 7", Type:=8)
range8 = Application.InputBox(Prompt:="Please Select Range 8", Type:=8)
range9 = Application.InputBox(Prompt:="Please Select Range 9", Type:=8)
range10 = Application.InputBox(Prompt:="Please Select Range 10", Type:=8)
array1 = [range1]
array2 = [range2]
array3 = [range3]
array4 = [range4]
array5 = [range5]
array6 = [range6]
array7 = [range7]
array8 = [range8]
array9 = [range9]
array10 = [range10]
Set startrange = MatrixSheet.range("C1")
For a = 1 To UBound(array1)
For b = 1 To UBound(array2)
For c = 1 To UBound(array3)
For d = 1 To UBound(array4)
For e = 1 To UBound(array4)
For f = 1 To UBound(array4)
For g = 1 To UBound(array4)
For h = 1 To UBound(array4)
For i = 1 To UBound(array4)
For j = 1 To UBound(array4)
z = z + 1
startrange.Offset(z, 0).Value = array1(a, 1)
startrange.Offset(z, 1).Value = array1(b, 1)
startrange.Offset(z, 2).Value = array1(c, 1)
startrange.Offset(z, 3).Value = array1(d, 1)
startrange.Offset(z, 3).Value = array1(e, 1)
startrange.Offset(z, 3).Value = array1(f, 1)
startrange.Offset(z, 3).Value = array1(g, 1)
startrange.Offset(z, 3).Value = array1(h, 1)
startrange.Offset(z, 3).Value = array1(i, 1)
startrange.Offset(z, 3).Value = array1(j, 1)
Next j
Next i
Next h
Next g
Next f
Next e
Next d
Next c
Next b
Next a
End Select
End Sub