Public Function Combin(ParamArray ArgList() As Variant) As Variant
Dim Elt As Variant, Bool As Boolean, x As Long, Rslt() As Variant
For Each Elt In ArgList
If Bool Then
x = x * (UBound(Elt) - LBound(Elt) + 1)
Else: Bool = True: x = UBound(Elt) - LBound(Elt) + 1: End If
Next Elt
ReDim Rslt(1 To x, LBound(ArgList) To UBound(ArgList))
sCombin Rslt, 1, LBound(ArgList), ArgList
End Function
Private Sub sCombin(ByRef Rslt() As Variant, ByVal i As Long, ByVal j As Long, ParamArray ArgList() As Variant)
Dim Elt As Variant, SubElt As Variant
For Each Elt In ArgList
' If VBA.IsArray(Elt) Then
' For Each SubElt In Elt
' sCombin Rslt, i, j, SubElt
' Next SubElt
' Else
' Stop
' MsgBox Elt
' End If
Next Elt
End Sub