Aviso de próxima mantención de km en listbox vba

Dante Amor

¿Hola Dan como estas?

Le quería pedir ayuda en un programa que estoy haciendo..

Resulta que busco en un textbox una patente o código de la columna A y me arroja la suma de los kilómetros de ese código o patente, hasta ahí todo bien pero lo que me gustaría es que en la columna siguiente del listbox me aparezca cuanto falta para la siguiente mantención, las mantenciones se realizan cada 5000 ... Le anexo el código donde busco en el textbox y muestra en el listbox.

Por favor Dan

Private Sub txtbuscar_Change()
Lb_buscar.Clear
 For i = 2 To Hoja3.Range("A" & Rows.Count).End(xlUp).Row
        cadena = UCase(Hoja3.Cells(i, 1))
        If cadena Like "*" & UCase(txtbuscar) & "*" And Hoja3.Cells(i, "A") <> 0 Then
            existe = False
            '
            For j = 0 To Lb_buscar.ListCount - 1
                If Hoja3.Cells(i, "A").Text = Lb_buscar.List(j) Then
                    Lb_buscar.List(j, 1) = Lb_buscar.List(j, 1) + Hoja3.Cells(i, "P")
                    existe = True
                    Exit For
                End If
            Next
            If existe = False Then
                Lb_buscar.AddItem Hoja3.Cells(i, "A").Value
                Lb_buscar.List(Lb_buscar.ListCount - 1, 1) = Hoja3.Cells(i, "P").Value
                Lb_buscar.List(Lb_buscar.ListCount - 1, 2) = "100000" - Lb_buscar.List(j, 1)
            End If
        End If
    Next
End Sub

2 respuestas

Respuesta
3

Agregué esta línea:

                    Lb_buscar.List(j, 2) = 5000 - Lb_buscar.List(j, 1)

Prueba y me comentas:

Private Sub txtbuscar_Change()
    Lb_buscar.Clear
    For i = 2 To Hoja3.Range("A" & Rows.Count).End(xlUp).Row
        cadena = UCase(Hoja3.Cells(i, 1))
        If cadena Like "*" & UCase(txtbuscar) & "*" And Hoja3.Cells(i, "A") <> 0 Then
            existe = False
            '
            For j = 0 To Lb_buscar.ListCount - 1
                If Hoja3.Cells(i, "A").Text = Lb_buscar.List(j) Then
                    Lb_buscar.List(j, 1) = Lb_buscar.List(j, 1) + Hoja3.Cells(i, "P")
                    Lb_buscar.List(j, 2) = 5000 - Lb_buscar.List(j, 1)
                    existe = True
                    Exit For
                End If
            Next
            If existe = False Then
                Lb_buscar.AddItem Hoja3.Cells(i, "A").Value
                Lb_buscar.List(Lb_buscar.ListCount - 1, 1) = Hoja3.Cells(i, "P").Value
                Lb_buscar.List(Lb_buscar.ListCount - 1, 2) = "100000" - Lb_buscar.List(j, 1)
            End If
        End If
    Next
End Sub


[sal u dos

Gracias Dan

Creo que me exprese mal .. Ejemplo . si el kilometraje esta en 1200 en la siguiente columna debería decir 3800 que seria lo que falta para los 5000 y si esta el kilometraje en 5001 en la siguiente columna debe decir 4999 que seria para llegar a los 10000 y así cada 5000 ..

Saludos

Te anexo la macro con los cambios

Private Sub txtbuscar_Change()
    Lb_buscar.Clear
    For i = 2 To Hoja3.Range("A" & Rows.Count).End(xlUp).Row
        cadena = UCase(Hoja3.Cells(i, 1))
        If cadena Like "*" & UCase(txtbuscar) & "*" And Hoja3.Cells(i, "A") <> 0 Then
            existe = False
            '
            For j = 0 To Lb_buscar.ListCount - 1
                If Hoja3.Cells(i, "A").Text = Lb_buscar.List(j) Then
                    Lb_buscar.List(j, 1) = Lb_buscar.List(j, 1) + Hoja3.Cells(i, "P")
                    prox = 5000 - (Lb_buscar.List(j, 1) - Int(Lb_buscar.List(j, 1) / 5000) * 5000)
                    Lb_buscar.List(j, 2) = prox
                    existe = True
                    Exit For
                End If
            Next
            If existe = False Then
                Lb_buscar.AddItem Hoja3.Cells(i, "A").Value
                Lb_buscar.List(Lb_buscar.ListCount - 1, 1) = Hoja3.Cells(i, "P").Value
                Lb_buscar.List(Lb_buscar.ListCount - 1, 2) = 100000 - Hoja3.Cells(i, "P").Value
            End If
        End If
    Next
End Sub

Esta línea, supongo que es para cuando es la primera vez

Lb_buscar.List(Lb_buscar.ListCount - 1, 2) = "100000" - Lb_buscar.List(j, 1)

Pero debería ser así:

Lb_buscar.List(Lb_buscar.ListCount - 1, 2) = 100000 - Hoja3.Cells(i, "P").Value

[No olvides valorar. Sal u dos

Muchísimas Gracias Dan

Es justo lo que necesitaba!

Me faltan solo dos cosas que arreglar del programa. Creare otra pregunta haber si me hechas una mano nuevamente por favor...

Gracias

Saludos

¡Gracias! 

Hola Dan como estas? disculpa se puede abrir este tema?

O creo otra pregunta?

Abre otra pregunta

Respuesta
2

Aca puede econtrar ejemplos con listbox que aporten algo más

https://www.youtube.com/playlist?list=PLdK9H5dMIfQhCuim_Sw4MwbYx1Q5eqF9z

https://youtu.be/0xqYY1R8UxM

https://youtu.be/of5u7VXoIk8

Tal vez interese un ejemplo de factura que puedes adaptar a presupuesto orden de trabajo etc

https://youtu.be/mEHN5ayH6fU

https://youtu.be/0UuR_zRQCB4

https://youtu.be/smL4A-aRjCM

Es posible requeiras sumar datos del listbox para totalizar

https://youtu.be/vF2OL0xfRIY[url=https://www.youtube.com/c/programarexcel?sub_confirmation=1]
[/url]https://youtu.be/pXi8ji1MO3Q[url=https://www.youtube.com/c/programarexcel?sub_confirmation=1]
https://www.youtube.com/c/programarexcel?sub_confirmation=1[/url] 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas