# Laço de repetição?

• ### Pergunta

• Como montar um laço de repetição para gerar as combinações a seguir?

Option Explicit

Private Sub UserForm_Initialize()
Dim TEXTO As String
Dim I, J As Integer
Dim ELEMENTO(1 To 4) As String
ELEMENTO(1) = "MA"
ELEMENTO(2) = "MD"
ELEMENTO(3) = "FA"
ELEMENTO(4) = "F5"
'  For J = 1 To 4
'     For I = 1 To 4

TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(2) & "3" & ELEMENTO(3) & "4" & ELEMENTO(4)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(2) & "3" & ELEMENTO(4) & "4" & ELEMENTO(3)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(3) & "3" & ELEMENTO(4) & "4" & ELEMENTO(2)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(3) & "3" & ELEMENTO(2) & "4" & ELEMENTO(4)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(4) & "3" & ELEMENTO(3) & "4" & ELEMENTO(2)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(4) & "3" & ELEMENTO(2) & "4" & ELEMENTO(3)

TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(1) & "3" & ELEMENTO(3) & "4" & ELEMENTO(4)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(1) & "3" & ELEMENTO(4) & "4" & ELEMENTO(3)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(3) & "3" & ELEMENTO(4) & "4" & ELEMENTO(1)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(3) & "3" & ELEMENTO(1) & "4" & ELEMENTO(4)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(4) & "3" & ELEMENTO(3) & "4" & ELEMENTO(1)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(4) & "3" & ELEMENTO(1) & "4" & ELEMENTO(3)

TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(2) & "3" & ELEMENTO(1) & "4" & ELEMENTO(4)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(2) & "3" & ELEMENTO(4) & "4" & ELEMENTO(1)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(1) & "3" & ELEMENTO(4) & "4" & ELEMENTO(2)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(1) & "3" & ELEMENTO(2) & "4" & ELEMENTO(4)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(4) & "3" & ELEMENTO(1) & "4" & ELEMENTO(2)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(4) & "3" & ELEMENTO(2) & "4" & ELEMENTO(1)

TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(2) & "3" & ELEMENTO(3) & "4" & ELEMENTO(1)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(2) & "3" & ELEMENTO(1) & "4" & ELEMENTO(3)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(3) & "3" & ELEMENTO(1) & "4" & ELEMENTO(2)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(3) & "3" & ELEMENTO(2) & "4" & ELEMENTO(1)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(1) & "3" & ELEMENTO(3) & "4" & ELEMENTO(2)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(1) & "3" & ELEMENTO(2) & "4" & ELEMENTO(3)

' Next I
' Next J
End Sub

A MELHOR FORMA DE AGRADECER &#201; VOTAR COMO &#218;TIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

quinta-feira, 16 de novembro de 2017 17:35

### Respostas

• ```Option Explicit

Dim conta, a, b, c, d As Integer
Dim MyTxt(1 To 4) As String
Dim MinhaLista(1 To 24) As String
MyTxt(1) = "MA"
MyTxt(2) = "MD"
MyTxt(3) = "FA"
MyTxt(4) = "F5"

conta = 1
For a = 1 To 4
For b = 1 To 4
For c = 1 To 4
For d = 1 To 4
If IsInArray(MyTxt(a), Array(MyTxt(b), MyTxt(c), MyTxt(d))) Or _
IsInArray(MyTxt(b), Array(MyTxt(a), MyTxt(c), MyTxt(d))) Or _
IsInArray(MyTxt(c), Array(MyTxt(a), MyTxt(b), MyTxt(d))) Or _
IsInArray(MyTxt(d), Array(MyTxt(a), MyTxt(b), MyTxt(c))) Then GoTo ali
MinhaLista(conta) = "1" & MyTxt(a) & "2" & MyTxt(b) & "3" & MyTxt(c) & "4" & MyTxt(d)
conta = conta + 1
ali:
Next
Next
Next
Next
ComboBox1.List = MinhaLista
End Sub

Private Sub UserForm_Initialize()

End Sub

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = UBound(Filter(arr, stringToBeFound)) > -1
End Function
```

A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

• Marcado como Resposta domingo, 26 de novembro de 2017 13:36
domingo, 26 de novembro de 2017 13:36

### Todas as Respostas

• amigo.

Qual é o objetivo de colocar em um array e depois mostrar no combo?

pelo que eu vi é um arranjo de itens 4,3. É isso mesmo?

terça-feira, 21 de novembro de 2017 20:58
• O array serve apenas para guardar os elementos na memória.

1MA2MD3FA4F5

1MA2FA3MD4F5

1MA2FA3F54FA

E assim por diante...

4 elementos, 4 posições

total de 24 combinações

Se der para fazer sem esse array não há problema

A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

quarta-feira, 22 de novembro de 2017 02:33
• Ok

Dá uma olhada nos posts abaixo:

https://www.devmedia.com.br/forum/algoritmo-de-arranjo/198148

Talvez te ajude.

Abs

quarta-feira, 22 de novembro de 2017 15:02
• ```Option Explicit

Dim conta, a, b, c, d As Integer
Dim MyTxt(1 To 4) As String
Dim MinhaLista(1 To 24) As String
MyTxt(1) = "MA"
MyTxt(2) = "MD"
MyTxt(3) = "FA"
MyTxt(4) = "F5"

conta = 1
For a = 1 To 4
For b = 1 To 4
For c = 1 To 4
For d = 1 To 4
If IsInArray(MyTxt(a), Array(MyTxt(b), MyTxt(c), MyTxt(d))) Or _
IsInArray(MyTxt(b), Array(MyTxt(a), MyTxt(c), MyTxt(d))) Or _
IsInArray(MyTxt(c), Array(MyTxt(a), MyTxt(b), MyTxt(d))) Or _
IsInArray(MyTxt(d), Array(MyTxt(a), MyTxt(b), MyTxt(c))) Then GoTo ali
MinhaLista(conta) = "1" & MyTxt(a) & "2" & MyTxt(b) & "3" & MyTxt(c) & "4" & MyTxt(d)
conta = conta + 1
ali:
Next
Next
Next
Next
ComboBox1.List = MinhaLista
End Sub

Private Sub UserForm_Initialize()

End Sub

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = UBound(Filter(arr, stringToBeFound)) > -1
End Function
```

A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

• Marcado como Resposta domingo, 26 de novembro de 2017 13:36
domingo, 26 de novembro de 2017 13:36
• Bom dia

Você conseguiu resolver o problema?

Att

sexta-feira, 1 de dezembro de 2017 11:16