none
Como transformar essa rotina de combinação - VBA. RRS feed

  • Pergunta

  • Olá amigos, desenvolvi essa rotina abaixo em VBA, mas ela faz apenas uma combinação fixa de 15 números combinados 5 a 5. Poderia modifica-la, então passaria a fazer outra combinação, como 10 combinados 3 a 3 por exemplo, mas continuaria fazendo apenas essa combinação 10C3 de forma FIXA. 

    Portanto ele é fixa 15C5, no caso esta rotina gera as 3003 combinações e imprime-as na planilha.

    Venho tentando sem sucesso transforma-la numa rotina que faça todos os tipos de combinações. Estou apelando para o conhecimento dos senhores. Sei que para isso tem que utilizar uma matriz ao invés das constantes que vão de "a" até "e", não estou conseguindo.

    Sei que existe uma rotina desenvolvida por uma programadora chamada Mirna Larson, e que a rotina dela faz qualquer tipo de combinação, mas é uma rotina enorme e usa vários recursos como Ubond, Lbond e outras funções, eu não consegui aplicar a rotina da Mirna Larson naquilo que quero fazer. Segue a minha rotina:

                                    

    ' Durval - 03/05/20 - Função: Combinar números

    ' Atalho do teclado: Ctrl+t

    Sub combina_15_5_5()

     a = 1
     b = 2
     c = 3
     d = 4
     e = 5

     lin = 1

     While a <= 11
       While b <= 12
         While c <= 13
           While d <= 14
             While e <= 15

                 Cells(lin, 2) = a
                 Cells(lin, 3) = b
                 Cells(lin, 4) = c
                 Cells(lin, 5) = d
                 Cells(lin, 6) = e

                 lin = lin + 1

                 e = e + 1
                 Wend
               d = d + 1
               e = d + 1
               Wend
             c = c + 1
             d = c + 1
             e = d + 1
             Wend
           b = b + 1
           c = b + 1
           d = c + 1
           e = d + 1
           Wend
         a = a + 1
         b = a + 1
         c = b + 1
         d = c + 1
         e = d + 1
         Wend

    End Sub

    terça-feira, 12 de maio de 2020 06:29

Todas as Respostas