Pasar dato sabsolutos de listbox a textbox

Amigos tengo un problema con un código que tengo para que al seleccionar elementos de un texbox estos se depositen automáticamente en en textbox cada uno me problema es el siguiente

El código al principio si funciona bien cuando selecciono el primer registro pero si luego quiero cambiar a otro en el mismo listbox no me aparece el valor absoluto de lo que seleccione
por ejemplo si selecciono el numero 164 la primera vez me lo pone en el textbox tal cal esta pero si después selecciono el 165 solo me duvelve al textbox el 1 si lo selecciono de nuevo me devuelve el 6 y si lo vuelvo a hacer me devuelve el 5 que puedo hacer para que solo me devuelva el valor absoluto que sea completamente igual al del textbox

Este es mi código:

Private Sub ListBox1_Click()
Set b = Sheets("vales")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
uc = b.Cells(1, Columns.Count).End(xlToLeft).Address
wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)
With Me.ListBox1
.ColumnCount = 3
.ColumnWidths = "175 pt;30 pt;30 PT"
.RowSource = "vales!A2:" & wc & uf
End With
fila = ListBox1.ListIndex + 2
With Hoja1.Range(ListBox1.RowSource)
TextBox1.Text = .Offset(ListBox1.ListIndex, 4).Resize(1, 1).Value
TextBox2.Text = .Offset(ListBox1.ListIndex, 5).Resize(1, 1).Value
TextBox3.Text = .Offset(ListBox1.ListIndex, 6).Resize(1, 1).Value
TextBox5.Text = .Offset(ListBox1.ListIndex, 0).Resize(1, 1).Value
End With

¿Qué es lo que me esta fallando?

1 respuesta

Respuesta

No entiendo por qué vuelves a cargar el listbox cada que le das click a un registro.

Si previamente ya cargaste el listbox, ya no es necesario que lo cargues nuevamente en el evento click, entonces esto ya no es necesario:

    Set b = Sheets("vales")
    uf = b.Range("A" & Rows.Count).End(xlUp).Row
    uc = b.Cells(1, Columns.Count).End(xlToLeft).Address
    wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)
    With Me.ListBox1
        .ColumnCount = 3
        .ColumnWidths = "175 pt;30 pt;30 PT"
        .RowSource = "vales!A2:" & wc & uf
    End With
    fila = ListBox1.ListIndex + 2


Si el dato ya está en el listbox, entonces simplemente lo tienes que pasar al textbox, por ejemplo:

Private Sub ListBox1_Click()
    TextBox1.Text = ListBox1.List(ListBox1.ListIndex, 4)
    TextBox2.Text = ListBox1.List(ListBox1.ListIndex, 5)
    TextBox3.Text = ListBox1.List(ListBox1.ListIndex, 6)
    TextBox5.Text = ListBox1.List(ListBox1.ListIndex, 0)
End Sub

Lo que te estoy poniendo solamente es un ejemplo, necesito ver el código con el que estás cargando el listbox. Puedes poner todo tu código para revisarlo.

'S aludos. Dante Amor. Si es lo que necesitas Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas