Usuário com melhor resposta
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)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(2) & "3" & ELEMENTO(4) & "4" & ELEMENTO(3)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(3) & "3" & ELEMENTO(4) & "4" & ELEMENTO(2)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(3) & "3" & ELEMENTO(2) & "4" & ELEMENTO(4)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(4) & "3" & ELEMENTO(3) & "4" & ELEMENTO(2)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(1) & "2" & ELEMENTO(4) & "3" & ELEMENTO(2) & "4" & ELEMENTO(3)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(1) & "3" & ELEMENTO(3) & "4" & ELEMENTO(4)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(1) & "3" & ELEMENTO(4) & "4" & ELEMENTO(3)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(3) & "3" & ELEMENTO(4) & "4" & ELEMENTO(1)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(3) & "3" & ELEMENTO(1) & "4" & ELEMENTO(4)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(4) & "3" & ELEMENTO(3) & "4" & ELEMENTO(1)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(2) & "2" & ELEMENTO(4) & "3" & ELEMENTO(1) & "4" & ELEMENTO(3)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(2) & "3" & ELEMENTO(1) & "4" & ELEMENTO(4)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(2) & "3" & ELEMENTO(4) & "4" & ELEMENTO(1)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(1) & "3" & ELEMENTO(4) & "4" & ELEMENTO(2)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(1) & "3" & ELEMENTO(2) & "4" & ELEMENTO(4)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(4) & "3" & ELEMENTO(1) & "4" & ELEMENTO(2)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(3) & "2" & ELEMENTO(4) & "3" & ELEMENTO(2) & "4" & ELEMENTO(1)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(2) & "3" & ELEMENTO(3) & "4" & ELEMENTO(1)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(2) & "3" & ELEMENTO(1) & "4" & ELEMENTO(3)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(3) & "3" & ELEMENTO(1) & "4" & ELEMENTO(2)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(3) & "3" & ELEMENTO(2) & "4" & ELEMENTO(1)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(1) & "3" & ELEMENTO(3) & "4" & ELEMENTO(2)
UserForm1.ComboBox1.AddItem (TEXTO)
TEXTO = "1" & ELEMENTO(4) & "2" & ELEMENTO(1) & "3" & ELEMENTO(2) & "4" & ELEMENTO(3)
UserForm1.ComboBox1.AddItem (TEXTO)
' Next I
' Next J
End Sub
A MELHOR FORMA DE AGRADECER É VOTAR COMO ÚTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com
- Editado AndersonFDiniz2 quinta-feira, 16 de novembro de 2017 17:41
Respostas
-
Option Explicit Sub letraspermutadas() 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() Call letraspermutadas 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 AndersonFDiniz2 domingo, 26 de novembro de 2017 13:36
Todas as Respostas
-
-
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
- Editado AndersonFDiniz2 quarta-feira, 22 de novembro de 2017 02:54
-
-
Option Explicit Sub letraspermutadas() 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() Call letraspermutadas 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 AndersonFDiniz2 domingo, 26 de novembro de 2017 13:36
-