Mostrar líneas de cada registro en un listbox

Necesito mostrar las líneas en cada registro que hay en un listbox, posterior a una búsqueda. Seguí los pasos que dieron hace un tiempo para la misma pregunta, pero en el listbox me aparece la fila (resultado) con muchas líneas. Por ejemplo:

- Cuando la búsqueda da como resultado una fila, me salen 21 filas (-----------------) antes y una (----) después del resultado.

- Cuando la búsqueda da como resultado tres filas, me salen 4 filas (------) antes de la primera respuesta, 13 filas (------) después del resultado, a continuación la segunda fila resultado, después 15 filas (-----), a continuación tercera fila resultado y a continuación 29 filas (-----).

La programación es la siguiente:

------Inicio-------

Private Sub CMDBuscarNormativa_Click()
If TXTBuscarNormativa.Text = "" Then
MsgBox ("Por favor Ingrese el dato a buscar"), vbExclamation, "Error de búsqueda"
TXTBuscar.SetFocus
Exit Sub
End If
LSTBuscar.Clear
xnum = Range("TablaNormativaISAM").CurrentRegion.Rows.Count
For i = 4 To xnum + 2
If LCase(Cells(i, 4).Value) Like "*" & LCase(Me.TXTBuscarNormativa.Text) & "*" Then
LSTBuscar.AddItem Cells(i, 1)
LSTBuscar.List(LSTBuscar.ListCount - 1, 1) = Cells(i, 2)
LSTBuscar.List(LSTBuscar.ListCount - 1, 2) = Cells(i, 3)
LSTBuscar.List(LSTBuscar.ListCount - 1, 3) = Cells(i, 4)
LSTBuscar.List(LSTBuscar.ListCount - 1, 4) = Cells(i, 5)
LSTBuscar.List(LSTBuscar.ListCount - 1, 5) = Cells(i, 6)
LSTBuscar.List(LSTBuscar.ListCount - 1, 6) = Cells(i, 7)
End If
cadena = String(100, "-") 'aprox col de ancho = 60pt
'se agrega una fila volcando en cada col la cadena
LSTBuscar.AddItem cadena
LSTBuscar.List(LSTBuscar.ListCount - 1, 1) = cadena
LSTBuscar.List(LSTBuscar.ListCount - 1, 2) = cadena
LSTBuscar.List(LSTBuscar.ListCount - 1, 3) = cadena
Next i

End Sub

---------------------Fin----------

Esperando vuestro apoyo y la comprensión por mi falta de vocabulario técnico, lo iré mejorando con el tiempo.

Eric

1 Respuesta

Respuesta
2

Prueba lo siguiente:

Private Sub CMDBuscarNormativa_Click()
  Dim xnum As Long, i As Long, j As Long
  '
  If TXTBuscarNormativa.Text = "" Then
    MsgBox ("Por favor Ingrese el dato a buscar"), vbExclamation, "Error de búsqueda"
    TXTBuscarNormativa.SetFocus
    Exit Sub
  End If
  '
  With LSTBuscar
    .Clear
    xnum = Range("TablaNormativaISAM").CurrentRegion.Rows.Count
    For i = 4 To xnum + 2
      If LCase(Cells(i, 4).Value) Like "*" & LCase(Me.TXTBuscarNormativa.Text) & "*" Then
        .AddItem
        .AddItem
        For j = 1 To 7
          .List(.ListCount - 2, j - 1) = Cells(i, j)
          .List(.ListCount - 1, j - 1) = String(100, "-")
        Next
      End If
    Next i
  End With
End Sub

Por lo que entiendo, quieres una raya después de cada fila.

Algo como esto:


Si no quieres la raya, entonces prueba lo siguiente:

Private Sub CMDBuscarNormativa_Click()
  Dim xnum As Long, i As Long, j As Long
  '
  If TXTBuscarNormativa.Text = "" Then
    MsgBox ("Por favor Ingrese el dato a buscar"), vbExclamation, "Error de búsqueda"
    TXTBuscarNormativa.SetFocus
    Exit Sub
  End If
  '
  With LSTBuscar
    .Clear
    xnum = Range("TablaNormativaISAM").CurrentRegion.Rows.Count
    For i = 4 To xnum + 2
      If LCase(Cells(i, 4).Value) Like "*" & LCase(Me.TXTBuscarNormativa.Text) & "*" Then
        .AddItem
        For j = 1 To 7
          .List(.ListCount - 1, j - 1) = Cells(i, j)
        Next
      End If
    Next i
  End With
End Sub

Resultado:

¡Muchas muchas Gracias! 

Lo hice con la raya, quedo genial. Muy agradecido nuevamente.

Ya valoré   :)

Bendiciones y que tengan una excelente semana.

Eric

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas