¿Cómo activar un fila de Excel desde un ListBox?

Tengo una "BaseDeDatos" con 23 columnas ("A:W"), de la misma que jalo datos a un ListBox1 de las primeras 9 columnas ("A:I").

Ingresando criterio de búsqueda en un TextBox1 y mediante el evento Click de un "CommandButton1" filtro los datos que deseo obtener sin ningún problema:

Para ejecutar el filtro utilizo este código

Private Sub CommandButton_Click()
ListBox1ColumnCount = 9
ListBox1.ColumnWidths = "65pt;25pt;150pt;90pt;90pt;40pt;50pt;70pt;70pt"

ListBox1.Clear
If Sheets("BaseDeDatos").Range("A:I").Find(TextBox1.Value) Is Nothing Then
TextBox1.Text = ""
MsgBox "No se encontraron los datos buscados!!!", 16, "Datos No Encontrados"
Else
With Sheets("BaseDeDatos").Range("A:I")
Set c = .Find(TextBox1.Value)
primera = c.Address
fila = c.Row
columna = c.Column
Do
ListBox1.AddItem Cells(fila, columna - (columna - 1))
ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(fila, (columna - (columna - 1)) + 1)
ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(fila, (columna - (columna - 1)) + 2)
ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(fila, (columna - (columna - 1)) + 3)
ListBox1.List(ListBox1.ListCount - 1, 4) = Cells(fila, (columna - (columna - 1)) + 4)
ListBox1.List(ListBox1.ListCount - 1, 5) = Cells(fila, (columna - (columna - 1)) + 5)
ListBox1.List(ListBox1.ListCount - 1, 6) = Cells(fila, (columna - (columna - 1)) + 6)
ListBox1.List(ListBox1.ListCount - 1, 7) = Cells(fila, (columna - (columna - 1)) + 7)
ListBox1.List(ListBox1.ListCount - 1, 8) = Cells(fila, (columna - (columna - 1)) + 8)
Set c = .FindNext(c)
fila = c.Row
columna = c.Column
Loop While c.Address <> primera
End With
End If
End Sub:

Nota:Esta rutina me funciona de maravilla ya que puedo utilizar cualquier palabra que se encuentre en algunas de las columnas como criterio de búsqueda.

Lo que no puedo hacer es: Que al seleccionar una fila en el ListBox1 se active la fila (o al menos la primera celda de la fila), de la "BaseDeDatos" que jala los datos.

¿Cómo lo hago?

He intentado de varias formas y no consigo hacerlo

1 Respuesta

Respuesta
7

Hice unos cambios a tu macro, prueba y me comentas

El contador de columnas lo puse a 10, también le agregué un punto después de ListBox1.

ListBox1.ColumnCount = 10

Agregué esta línea:

ListBox1.List(ListBox1.ListCount - 1, 9) = fila

Y con estas líneas, te selecciona la primera celda del registro seleccionada en el listbox.

Private Sub ListBox1_Click()
Range("A" & ListBox1.Column(9, ListBox1.ListIndex)).Select
End Sub

Private Sub CommandButton_Click()
ListBox1.ColumnCount = 10
ListBox1.ColumnWidths = "65pt;25pt;150pt;90pt;90pt;40pt;50pt;70pt;70pt"
ListBox1.Clear
If Sheets("BaseDeDatos").Range("A:I").Find(TextBox1.Value) Is Nothing Then
TextBox1.Text = ""
MsgBox "No se encontraron los datos buscados!!!", 16, "Datos No Encontrados"
Else
With Sheets("BaseDeDatos").Range("A:I")
Set c = .Find(TextBox1.Value)
primera = c.Address
fila = c.Row
columna = c.Column
Do
ListBox1.AddItem Cells(fila, columna - (columna - 1))
ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(fila, (columna - (columna - 1)) + 1)
ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(fila, (columna - (columna - 1)) + 2)
ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(fila, (columna - (columna - 1)) + 3)
ListBox1.List(ListBox1.ListCount - 1, 4) = Cells(fila, (columna - (columna - 1)) + 4)
ListBox1.List(ListBox1.ListCount - 1, 5) = Cells(fila, (columna - (columna - 1)) + 5)
ListBox1.List(ListBox1.ListCount - 1, 6) = Cells(fila, (columna - (columna - 1)) + 6)
ListBox1.List(ListBox1.ListCount - 1, 7) = Cells(fila, (columna - (columna - 1)) + 7)
ListBox1.List(ListBox1.ListCount - 1, 8) = Cells(fila, (columna - (columna - 1)) + 8)
ListBox1.List(ListBox1.ListCount - 1, 9) = fila
Set c = .FindNext(c)
fila = c.Row
columna = c.Column
Loop While c.Address <> primera
End With
End If
End Sub
Private Sub ListBox1_Click()
Range("A" & ListBox1.Column(9, ListBox1.ListIndex)).Select
End Sub

Saludos.Dam
Si es lo que necesitas.

Muchísimo.. muy agradecido

Una respuesta de campeonato, con una sola linea solucionado el tema. En otras palabras simple concreta y efectiva la respuesta.

El conocimiento lo tienen ustedes, pero su sabiduría radica en compartirlo.

Gracias

Saludos

neutorico712

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas