Coincidir celdas desde un listobox

Hola, ojalá alguien me pueda ayudar. 

Tengo un userform con un listbox y un textbox que uso de buscador. Al buscar un nombre, el resultado de la búsqueda me sale en el listbox. Lo que yo quiero hacer es que al momento de darle click a uno de los resultados del listbox, se me active la celda de la opción seleccionada. Alguien tiene la respuesta?!?! Gracias!!

1 respuesta

Respuesta
2

No se comprende cómo relacionar la 'celda' con el valor del listbox. Indica con un ejemplo que valores se vuelcan al listbox.

Para obtener el valor del elemento seleccionado, podemos utilizar un par de instrucciones:

Private Sub ListBox1_Click()
'x Elsamatilde
'muestra la posiciòn del elemento seleccionado a partir de 0
MsgBox ListBox1.ListIndex
'muestra el contenido del elemento seleccinado
MsgBox ListBox1.Value
End Sub

Quizàs puedas guardar ademas del dato, la referencia de la celda en otra col, es decir tener una lista de 2 col. Entonces para obtener el valor de la 2da col seria:

MsgBox ListBox1.List(ListBox1.ListIndex, 1)

Nota: las col se numeran a partir de 0 por eso le solicito la col 1 del registro seleccionado.

En este caso la propiedad ColumnCount del listbox debe quedar en 2.

Si te queda alguna duda de como implementar esto dejame escrita aquí tu macro para pasar datos al listbox.

https://www.dropbox.com/sh/cul9c3npj8vkgn9/AABBCKcZXbyrHRhTOUxCH34ua?dl=0

Lo que pasa es que he adaptado una macro para una base de datos que yo tengo que tiene un buscador de nombres donde el resultado de la búsqueda se pone en la listbox. Además hay una opción para eliminar la fila que se selecciona con un botón eliminar. Mi problema en sí es que solo me funciona la opción de eliminar si es que la primera columna son letras, pero en mi caso son fechas, por lo que no me está funcionando. Por eso pensaba hacer lo de asociar las celdas con el listbox pero tampoco se bien como hacerlo. Si puedes dale click al link de dropbox a ver si me puedes dar una mano. Te agradezco tu tiempo!.

Tu macro de búsqueda controla contenidos en 3 columnas: C, B y E con las líneas:

If LCase(Cells(i, 3).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then

Si necesitas comparar también la col 1 debes agregar otro ElseIF y obtendrás resultados tal como se observa en la imagen,

Antes del End If colocá la nueva condición con el ElseIf LCase(Cells(i,1).Value) :

            ElseIf LCase(Cells(i, 1).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
                Me.ListBox1.AddItem Cells(i, 1)
                Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, 2)
            End If

Ahora, como el Listbox te muestra la col empleados, al seleccionar un item de la lista debes guardar el dato de la 2da col en la variable xEmpleados, tal como te mencioné en mi 1er respuesta:

    If Me.ListBox1.Selected(i) Then
        xEmpleado = Me.ListBox1.List(i, 1)
    End If

y en el botón de Eliminar se compara la 2da col:

If MsgBox("¿Seguro que quiere eliminar este Registro?", vbQuestion + vbYesNo) = vbYes Then
For fila = 2 To Final
If Hoja1.Cells(fila, 2) = xEmpleado Then

Nota: veo que utilizas un bucle para recorrer la lista. Aclara x favor si necesitas seleccionar y eliminar varios registros por vez.

Te envío el libro con los cambios.

No tengo tu correo para enviarte el libro ajustado... podes escribirme a cibersoft_arg ARROBA yahoo.com.ar

PD) No es necesario que valores antes de finalizar el tema... luego tendrás que modificarla porque seguramente recibirás mucho más que 'util' o 'bueno'.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas