Como hago para repetir un ciclo

Buenas tardes tengo este código
If Aprobado.Value = True Then
Dim j As Integer, k As Integer
For j = 0 To Previaje.ListCount - 1
    If Previaje.Selected(j) = True Then
        For k = 2 To Sheets("previajes").Range("B65536").End(xlUp).Row
            If Sheets("previajes").Cells(k, 2) = Previaje.List(j) Then
                Sheets("previajes").Cells(k, 60) = "Aprobado"
                Sheets("previajes").Cells(k, 61) = Fecha.Text
                Exit For
            End If
        Next
    End If
Next
lo que hace es revisar en un listbox los dastos que estan seleccionados y los busca en determianda hoja, cuando los encuentra me pone aprobado y la fecha pero resulta que aveces ese datos esta varias veces y solo me lo hace en el primero que encuentra, como hago para repetirlo hasta que no lo encuentre mas?
Muchas gracias

1 respuesta

Respuesta
1
'Es obvio, lo estas sacando del For a la primera vez que lo encuentra
'anula la línea exit for, así:
If Aprobado.Value = True Then
Dim j As Integer, k As Integer
For j = 0 To Previaje.ListCount - 1
    If Previaje.Selected(j) = True Then
        For k = 2 To Sheets("previajes").Range("B65536").End(xlUp).Row
            If Sheets("previajes").Cells(k, 2) = Previaje.List(j) Then
                Sheets("previajes").Cells(k, 60) = "Aprobado"
                Sheets("previajes").Cells(k, 61) = Fecha.Text
                'Exit For
            End If
        Next
    End If
Next
No me funciona
Ok perdón si me funciona lo que esta pasando es que me esta cargando los repetidos las veces que existe entonces tengo que seleccionar todos así sea 20
¿No entendí, cargando adónde?
Ya lo del exit for esta perfecto pero me esta cargando muchas veces en el listbox el mismo código, veo que el problema esta en que tengo que eliminar los registros duplicados que me carga en el listbox
Envíame el código completo, donde cargas el listbox.
Ayudame pporfa con un código que me elimine los duplicados de un listbox
Te responderé rápido lo que tienes que hacer, pero sin el código porque estoy de salida.
Mira, tu tienes un ciclio a través del cual adicionas los items al listbox, verdad! ; Pues lo que tienes que hacer es muy sencillo, dentro del mismo ciclo de llenado, ingresa un for que recorra el listbox buscando el valor que va a ser asignado al listbox1 ANTES DE ASIGNARLO, algo así:
while ...etc 'ciclo de llenado
encontrado = false
For j = 0 To Previaje.ListCount - 1
<span style="white-space: pre;"> </span>if Previaje.list(j) = NUEVOVALOR then
<span style="white-space: pre;"> </span>encontrado = true
<span style="white-space: pre;"> </span>exit for
<span style="white-space: pre;"> </span>end if
next
if encontrado = false then
<span style="white-space: pre;"> </span>previaje.AddItem NUEVOVALOR
END IF
wend
Hola mira el código que me ayudaste no me funciona.
Este es el código que me agrega los datos pero necesito que no me cargue repetidos,
mil gracias
Dim Fila As Integer
Previaje.Clear
For Fila = 1 To Sheets("previajes").Range("B65536").End(xlUp).Row
    If Sheets("previajes").Cells(Fila, 8) = Cliente.Value And Sheets("previajes").Cells(Fila, 60) = "Aprobado" And Sheets("previajes").Cells(Fila, 62) = "OK" And Sheets("previajes").Cells(Fila, 64) = "Sin Facturar" Then
               Previaje.AddItem Sheets("previajes").Cells(Fila, 2)
    End If
Next
'Prueba esta modificación:
Dim Fila As Integer
Dim Repetido as Boolean
Previaje.Clear
For Fila = 1 To Sheets("previajes").Range("B65536").End(xlUp).Row
    repetido = false
    If Sheets("previajes").Cells(Fila, 8) = Cliente.Value And Sheets("previajes").Cells(Fila, 60) = "Aprobado" And Sheets("previajes").Cells(Fila, 62) = "OK" And Sheets("previajes").Cells(Fila, 64) = "Sin Facturar" Then
        if Previaje.ListCount > 0 then
            For jj = 0 To Previaje.ListCount - 1
                if Previaje.list(jj) = Sheets("previajes").Cells(Fila, 2) then
                    repetido = true
                    exit for
                end if
            next jj
            if repetido = false then Previaje.AddItem Sheets("previajes").Cells(Fila, 2)
        else
            Previaje.AddItem Sheets("previajes").Cells(Fila, 2)
        end if
        End If
Next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas