Just for fun, another way, perhaps a bit faster:
Public Sub test()
Dim vArr As Variant
vArr = PickSixToTotal(52, 138)
With ActiveSheet.Range("A1")
If IsArray(vArr) Then
With .Resize(UBound(vArr, 1), UBound(vArr, 2))
.Clear
.Value = vArr
End With
Else
.Value = vArr
End If
End With
End Sub
Public Function PickSixToTotal( _
ByVal MaxNum As Long, _
ByVal Target As Long, _
Optional ByVal MaxRows As Long = 50000#) As Variant
Const sp As String = ","
Dim vArr As Variant
Dim nCol As Long
Dim nCount As Long
Dim nCum As Long
Dim n1 As Long, n2 As Long, n3 As Long
Dim n4 As Long, n5 As Long, n6 As Long
Dim n12 As Long, n123 As Long, n1234 As Long
If Target < 21 Or Target > (6 * MaxNum - 15) Then
PickSixToTotal = "Target Out of Range"
Exit Function
End If
nCol = 1
nCount = 1
ReDim vArr(1 To MaxRows, 1 To nCol)
For n1 = 1 To MaxNum - 5
If (6 * n1 + 15) <= Target And _
(n1 + 5 * MaxNum - 10) >= Target Then
For n2 = n1 + 1 To MaxNum - 4
n12 = n1 + n2
If (n1 + 5 * n2 + 10) <= Target And _
(n12 + 4 * MaxNum - 6) >= Target Then
For n3 = n2 + 1 To MaxNum - 3
n123 = n12 + n3
If (n12 + 4 * n3 + 6) <= Target And _
(n123 + 3 * MaxNum - 3) >= Target Then
For n4 = n3 + 1 To MaxNum - 2
n1234 = n123 + n4
If (n123 + 3 * n4 + 3) <= Target And _
(n1234 + 2 * MaxNum - 1) >= Target Then
For n5 = n4 + 1 To MaxNum - 1
n6 = Target - n1234 - n5
If n6 <= n5 Then Exit For
If n6 <= MaxNum Then
vArr(nCount, nCol) = n1 & sp & n2 & sp & _
n3 & sp & n4 & sp & n5 & sp & n6
If nCount = MaxRows Then
nCol = nCol + 1
nCount = 1
ReDim Preserve vArr(1 To MaxRows, 1 To nCol)
Else
nCount = nCount + 1
End If
End If
Next n5
End If
Next n4
End If
Next n3
End If
Next n2
End If
Next n1
PickSixToTotal = vArr
End Function