Для этого вам понадобится 3 вложенных цикла. Вот пример
Option Explicit
Public Sub ExampleGenerateUniquePermutations()
Dim ArraySize() As Variant
ArraySize = Array("S", "M", "L")
Dim ArrayColor() As Variant
ArrayColor = Array("red", "green")
Dim ArrayVariation() As Variant
ArrayVariation = Array("left", "right", "extra", "nonsense")
Dim Size As Variant
For Each Size In ArraySize
Dim Color As Variant
For Each Color In ArrayColor
Dim Variation As Variant
For Each Variation In ArrayVariation
Debug.Print Size, Color, Variation
Next Variation
Next Color
Next Size
End Sub
Результат будет
S red left
S red right
S red extra
S red nonsense
S green left
S green right
S green extra
S green nonsense
M red left
M red right
M red extra
M red nonsense
M green left
M green right
M green extra
M green nonsense
L red left
L red right
L red extra
L red nonsense
L green left
L green right
L green extra
L green nonsense
Обратите внимание, что вы можете легко разделить строку "S;M;L;XL"
на массив, используя функцию разделения ArraySize = Split("S;M;L;XL", ";")