- Sub Test()
- Dim arrList As Variant
- Dim arrResult As Variant
- ' arrList = Array(0, 1, 2, 3)
- ' myCombination arrList, 0, 0, 4, arrResult
- arrList = Array(0, 1, 2)
- myCombination arrList, 0, 0, 3, arrResult
-
- arrResult = Application.WorksheetFunction.Transpose(arrResult)
-
- Sheet1.UsedRange.Clear
- Sheet1.Range("A1").Resize(UBound(arrResult) - 1, UBound(arrResult, 2)) = arrResult
- MsgBox "OK"
- End Sub
- Function myCombination(arrList As Variant, lngSelID As Long, lngResultID As Long, lngMax As Long, ByRef arrResult As Variant)
- Dim lngCur As Long, lngRow As Long, lngCol As Long
- If lngResultID > lngMax Then
- lngRow = UBound(arrResult, 2) + 1
- ReDim Preserve arrResult(0 To lngMax, 0 To lngRow)
- For lngCol = LBound(arrResult) To UBound(arrResult)
- arrResult(lngCol, lngRow) = arrResult(lngCol, lngRow - 1)
- Next
- Else
- If IsArray(arrResult) = False Then ReDim arrResult(0 To lngMax, 0 To 0)
-
- For lngCur = lngSelID To UBound(arrList)
- lngRow = UBound(arrResult, 2)
- arrResult(lngResultID, lngRow) = arrList(lngCur)
- myCombination arrList, lngCur, lngResultID + 1, lngMax, arrResult
- Next
- End If
- End Function
复制代码 |