Tengo un problema con las combinaciones y filas en un código elaborado en Visual Basic.

Ya los puedo guardar sencillamente en una listview, pero me aparece una fila de más, osea al final se me coloca 6 combinaciones pero la 7ma me aparece vacía en la columna numero y las demás llenas, ¿qué sera?
Private Sub monto_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(".")
KeyAscii = 0
Case Asc(",")
KeyAscii = 0
Case vbKeyBack
Case vbKeyDelete
Case vbKeyReturn
KeyAscii = 0
If numero_jugar.Text = "" Then Exit Sub
triple = numero_jugar.Text
ListView1.ListItems.Clear
s = Permutar(triple)
vP = Split(s, vbCrLf)
For i = 0 To UBound(vP)
Set tLi = ListView1.ListItems.Add(, , vP(i))
tLi.SubItems(1) = loteria.Text
tLi.SubItems(2) = sorteo.Text
tLi.SubItems(3) = signo.Text
tLi.SubItems(4) = monto.Text
Next
Case Else
KeyAscii = 0
End Select
Respuesta
1
Reemplaza en la función Permutar el siguiente código
Permutar = sOut
por este
Permutar = trim(sOut)
Y listo
Muchaaaas gracias amigo, de verdad muy agradecido con su ayuda... me podrás ayudar en que yo quiero que si meto 6 números, me los combine y me muestre las combinaciones en grupos de 3 en 3... osea meto 123456 y me salga 123 456 132 465 y así sucesivamente...
Lo que pasa es que, me llena todo el listview con las 6 combinaciones, pero el problema viene cuando se terminan las combinaciones, 6 en este caso, esta rutina me agrega otro renglón más con las demás columnas, pero sin la columna principal... ¿qué podrá ser?
El problema esta en que estamos agregando un separador más (el " " o el vbcrlf, ya no se en cual quedamos) por lo que la función split corta por dicho carácter y al encontrar a este en el ultimo lugar crea un registro vacío en el vector, podes o bien tratar de evitar agregar dicho carácter o simplemente en el For i = 0 To UBound(vP) cuando vp(i) sea distinto de blanco agregarlo a la listview caso contrario omitirlo.
Tarde pero seguro te paso un código que solo funciona para grupos de a 3, si quieres más grupos debes agregar más for y más preguntas como las que están a partir del 2do for, acá va el código.
Fíjate ademas que llama a permutar
////////////////////
Private Sub Form_Load()
MsgBox Combinacion("123456")
End Sub
Function Combinacion(elem As String) As String
Dim lc As Integer
Dim j, jj, jjj As Integer
Dim sPermuta As String
Dim sRet As String
lc = Len(elem)
sRet = vbNullString
For j = 1 To lc
For jj = 1 To lc
If jj > j Then
For jjj = 1 To lc
If jjj > jj Then
sPermuta = Mid(elem, j, 1) & Mid(elem, jj, 1) & Mid(elem, jjj, 1)
sRet = sRet & Permutar(sPermuta)
End If
Next jjj
End If
Next jj
Next j
End Function
/////////////////////

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas