Boa tarde, pessoal!
Estou com uma macro no Excel que traz TODAS as combinações de 15 números dentro do universo de 1 a 17 (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ; 1,2,3,4,5,6,7,8,9,10,11,12,13,14,16 ...).
Apesar de ser uma macro extremamente simples, foi bem difícil chegar nela, tendo em vista que sou novato na área.
Ocorre que o resultado que me aparece é diretamente na MSGBOX, como é possível ver pela macro abaixo. Precisava muito colar essa informação no notepad ou, preferencialmente, na própria pasta de trabalho, em qualquer planilha. Alguém pode me ajudar? Estou quebrando a cabeça, mas sei que é algo extremamente simples!
Public ss As String
Sub Combinations(Optional v As Variant)
Dim n As Integer, m As Integer
Dim rng As Range
numcomb = 0
If IsMissing(v) Then
v = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
End If
ReDim Preserve v(1 To 17)
n = UBound(v, 1)
m = 15
If Application.Combin(n, m) > 22210 Then
MsgBox "Too many to write out, quitting"
Exit Sub
End If
ss = ""
'' Range("A3").Select
Comb2 n, m, 1, "'", v
MsgBox ss
End Sub
'Generate combinations of integers k..n taken m at a time, recursively
Sub Comb2(ByVal n As Integer, ByVal m As Integer, _
ByVal k As Integer, ByVal s As String, v As Variant)
Dim v1 As Variant
If m > n - k + 1 Then Exit Sub
If m = 0 Then
v1 = Split(Replace(Trim(s), "'", ""), " ")
sss = ""
For i = LBound(v1) To UBound(v1)
sss = sss & v(v1(i)) & " "
'' ActiveCell.Offset(0, i) = v(v1(i))
Next
'' ActiveCell.Offset(0, 8) = sss
'' ActiveCell.Offset(1, 0).Select
ss = ss & sss & vbNewLine
Exit Sub
End If
Comb2 n, m - 1, k + 1, s & k & " ", v
Comb2 n, m, k + 1, s, v
End Sub
Agradeço desde já o apoio!
Postado : 16/07/2015 2:44 pm