Problemas al seleccionar un dato en el listbox

Estoy realizando una tabla de datos en Excel en la cual tengo un textbox escribo el dato que necesito en el y después le doy click a buscar que es un commandbotton y me busca el dato bien y este aparece en un listbox y cuando lo selecciono lo puedo editar .. El problema esta que cuando busco un nombre especifico y lo busca a la hora de seleccionarlo me aparecen los datos de la primera fila de mi tabla en excel y así sucesivamente me van apareciendo los datos en el orden que están en la tabla de excel y no del dato que yo busco. Les agradecería su ayuda no se mucho de esto.

On Error Resume Next
Sheets("Usuarios").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
Sheets("Usuarios").Activate
If nCliente(ListBox1.Text) <> 0 Then
Sheets("Usuarios").Activate
Cells(ListBox1.ListIndex + 2, 1).Select
TextBox1 = ActiveCell.Offset(0, 0)
TextBox2 = ActiveCell.Offset(0, 1)
TextBox3 = ActiveCell.Offset(0, 2)
TextBox4 = ActiveCell.Offset(0, 3)
TextBox5 = ActiveCell.Offset(0, 4)
TextBox6 = ActiveCell.Offset(0, 5)
TextBox7 = ActiveCell.Offset(0, 6)
TextBox8 = ActiveCell.Offset(0, 7)
TextBox9 = ActiveCell.Offset(0, 8)
TextBox10 = ActiveCell.Offset(0, 9)
TextBox11 = ActiveCell.Offset(0, 10)
TextBox12 = ActiveCell.Offset(0, 11)
TextBox13 = ActiveCell.Offset(0, 12)
TextBox14 = ActiveCell.Offset(0, 13)
Else
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
TextBox13 = ""
TextBox14 = ""

End If

Y esto es lo que tengo en mi listbox .. Me podrían corregir los errores.

1 Respuesta

Respuesta
1

H o l a : Envíame tu archivo con formulario, me explicas con un ejemplo lo que quieres hacer.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Aylin De Leon” y el título de esta pregunta.

Gracias por responder, y ya te envié el correo. :3

 H o  l a : 

Te anexo los cambios al código, para buscar y para llenar los textbox cuando seleccionas un registro del listbox.

Dim i, items, xDepto
'Option Explicit
Dim Cliente As Integer
Private Sub btn_buscar_Click()
'Act.Por.Dante Amor
    Me.ListBox1.Clear
    If Me.txt_buscar.Value = Empty Then
        MsgBox "Escriba un registro para buscar"
        Me.txt_buscar.SetFocus
        Exit Sub
    End If
    '
    items = Hoja1.Range("tabla1").CurrentRegion.Rows.Count
    For i = 2 To items
        dato = ""
        For k = 1 To 10
            dato = dato & LCase(Cells(i, k).Value)
        Next
        If dato Like "*" & LCase(Me.txt_buscar.Value) & "*" Then
            Me.ListBox1.AddItem Cells(i, 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, 2)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, 3)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, 4)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, 5)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, 6)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, 7)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, 8)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Cells(i, 9)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = i 'número de fila
        End If
    Next i
    Me.txt_buscar.SetFocus
    Me.txt_buscar.SelStart = 0
    Me.txt_buscar.SelLength = Len(Me.txt_buscar.Text)
End Sub
'
Private Sub ListBox1_Click()
'Por.Dante Amor
    fila = Val(ListBox1.List(ListBox1.ListIndex, 9))
    For i = 1 To 14
        Me.Controls("TextBox" & i) = Hoja1.Cells(fila, i)
    Next
End Sub

Cuando cargas un listbox con el método AddItem solamente puedes cargar hasta 10 columnas. 

Si quieres cargar más columnas tendrás que cargar con rowsouce, pero para cargar con filtro, tendrás que utilizar otra hoja, pero eso es otro proceso.

Para seguir utilizando el AddItem, es necesario almacenar el número de fila en una de las columnas del listbox, en este caso estoy adicionando la fila en la columna 9.

Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = i 'número de fila

Con la fila almacenada, cuando seleccionas un registro en el listbox, ahora sí ya sabes qué registro cargar en los textbox, obtienes el número de fila almacenado y ya con ese dato cargas los textbox.

Private Sub ListBox1_Click()
'Por.Dante Amor
    fila = Val(ListBox1.List(ListBox1.ListIndex, 9))
    For i = 1 To 14
        Me.Controls("TextBox" & i) = Hoja1.Cells(fila, i)
    Next
End Sub

Para modificar o eliminar un registro elegido en el listbox, deberás seguir el mismo concepto. Si quieres que te ayude con esa parte, crea una nueva pregunta y ahí me describes lo que necesitas.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas