Entonces no es mi funcion lo que necesitas.
No se me ocurría por donde pillarlo, asi que he usado una sub recursiva muy chula que nos dejó seba123neo, con algunas modificaciones.
Aquí está la sub original:
http://foro.elhacker.net/programacion_vb/combinaciones_vb-t240009.0.html
Y esto es lo que he sacado:
Hace falta un command button y un listbox.
A la sub de seba123neo solo le he añadido una matriz donde ir dejando los grupos que luego convertiremos segun nuestra necesidad.
Es mejor usar matrices porque un listbox tiene más limitaciones de capacidad.
Espero que te sirva.
Saludos
No se me ocurría por donde pillarlo, asi que he usado una sub recursiva muy chula que nos dejó seba123neo, con algunas modificaciones.
Aquí está la sub original:
http://foro.elhacker.net/programacion_vb/combinaciones_vb-t240009.0.html
Y esto es lo que he sacado:
Hace falta un command button y un listbox.
Código (vb) [Seleccionar]
Option Explicit
Private Sub Command1_Click()
Dim F As Long
Dim F2 As Long
Dim Matriz1() As String
Dim Matriz2() As String
Dim MatrizFinal() As String
Dim Linea As String
Dim Contador As Long
Dim ListaElementos As String
List1.Clear
ListaElementos = "AA,BB,CC,15,EE,20,GG,01" ' max. 10 elementos
Matriz1 = Split(ListaElementos, ",") 'separamos los elementos
For F = 0 To UBound(Matriz1) ' creamos una linea con X numeros
Linea = Linea & CStr(F)
Next F
ReDim Matriz2(0)
Call Combinaciones(Linea, Matriz2) ' creamos la matriz con las combinaciones de los X numeros
ReDim MatrizFinal(0)
For F = 0 To UBound(Matriz2) - 1
Linea = ""
For F2 = 1 To UBound(Matriz1) + 1 ' reemplazamos los numeros por los elementos de la lista
Linea = Linea & Matriz1(Val(Mid$(Matriz2(F), F2, 1))) & ","
Next F2
ReDim Preserve MatrizFinal(Contador)
MatrizFinal(Contador) = Left(Linea, Len(Linea) - 1) 'guardamos quitando la ultima coma
Contador = Contador + 1
Next F
' mostramos el resultado
MsgBox "Total " & Contador & " grupos" ' mostramos la cantidad de grupos extraidos
For F = 0 To UBound(MatrizFinal)
List1.AddItem MatrizFinal(F) ' y los cargamos en el listbox
Next F
End Sub
Private Sub Combinaciones(Palabra As String, ByRef Matriz() As String, Optional strFixed As String)
Dim i As Integer
If Len(Palabra) > 1 Then
For i = 1 To Len(Palabra)
Combinaciones Left$(Palabra, i - 1) & Mid$(Palabra, i + 1), Matriz, strFixed & Mid$(Palabra, i, 1)
Next i
Else
Matriz(UBound(Matriz)) = strFixed & Palabra
ReDim Preserve Matriz(UBound(Matriz) + 1)
End If
End Sub
A la sub de seba123neo solo le he añadido una matriz donde ir dejando los grupos que luego convertiremos segun nuestra necesidad.
Es mejor usar matrices porque un listbox tiene más limitaciones de capacidad.
Espero que te sirva.
Saludos