¿Cómo programar los botones “primera fila”, “anterior” , “siguiente” y “última fila” de un ListBox?

Estimado experto de VBA para Excel:
Tengo un problema en mi proyecto que tal vez sea simple y muy utilizado pero no sé, cuales son
las instrucciones para la macro para que funcione, el tema es, en la “Hoja1” tengo un botón que ejecuta un formulario con las siguientes características:
1. Un “ListBox1” de 5 columnas, cuyos encabezados son: “Nº ID” que viene siendo la columna 1, las siguientes columnas serían “Campo2”, “Campo3”, “Campo4” y “Campo5”.
2. En el mismo formulario, un “TextBox1” que me permita buscar el “Nª ID” y que, me seleccione el número encontrado de la lista.
3. El RowSource de la lista, viene de la “Hoja2” con una tabla llamada “Tabla1” que contiene 13 columnas, pero solo me interesan mostrar 5 columnas y la principal de ellas es el “Nº ID” de la columna 1.
El problema: ¿Cómo puedo programar los botones de “primera fila”, “anterior”, “siguiente” y “última fila” de un Listbox?
La idea, que permitan accionar botones de “que vaya a la primera fila (fila 3)”, “fila anterior”, “fila siguiente” y “vaya a la última fila actual” ya que, este “ListBox1” se mantiene en constante movimiento de registros en la base de datos de la hoja2.
De tal manera que los botones estén diseñados en los laterales del “Texbox1” para que el usuario visualice el “Nº ID” cliqueando en los botones de navegación izquierda y derecha.
Espero encuentre esta solución y, evolucionar el proyecto que estoy elaborando.

1 Respuesta

Respuesta
2

Te anexo el código para moverse en el listbox y también en la hoja

'Por Dante Amor
Private Sub CommandButton1_Click()
'Primera
    If ListBox1.ListCount > -1 Then
        ListBox1.Selected(0) = True
        Range("tabla1").Cells(ListBox1.ListIndex + 1, "A").Select
    End If
End Sub
Private Sub CommandButton2_Click()
'Siguiente
    If ListBox1.ListCount > -1 Then
        f = ListBox1.ListIndex
        If f < ListBox1.ListCount - 1 Then
            ListBox1.Selected(f + 1) = True
            Range("tabla1").Cells(ListBox1.ListIndex + 1, "A").Select
        End If
    End If
End Sub
Private Sub CommandButton3_Click()
'Anterior
    If ListBox1.ListCount > -1 Then
        f = ListBox1.ListIndex
        If f > 0 Then
            ListBox1.Selected(f - 1) = True
            Range("tabla1").Cells(ListBox1.ListIndex + 1, "A").Select
        End If
    End If
End Sub
Private Sub CommandButton4_Click()
'Última
    If ListBox1.ListCount > -1 Then
        ListBox1.Selected(ListBox1.ListCount - 1) = True
        Range("tabla1").Cells(ListBox1.ListIndex + 1, "A").Select
    End If
End Sub
'
Private Sub TextBox1_Change()
'Buscar el id
    For i = 0 To ListBox1.ListCount - 1
        If LCase(ListBox1.List(i)) = LCase(TextBox1.Value) Then
            ListBox1.Selected(i) = True
            Exit For
        End If
    Next
End Sub

Avísame cualquier detalle. Tal vez haya que ajustar alguna fila por el encabezado del list, prueba y me comentas.


.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas