jueves, 13 de junio de 2019

VBA: Recuperar columna de un ListBox

Hoy veremos una sencilla manera de obtener los valores de una columna en concreto de un ListBox dentro de un UserForm.
Tratamos de dar respuesta al comentario de un lector al hilo de este post.
[...]lo que estoy tratando de lograr es que los datos de una columna del listbox sean los que aparecen en los textbox. 
[...]


Tenemos en nuestra hoja de cálculo una tabla de datos (llamada 'Tabla1'), y ya en el Editor de VB un UserForm1 con un:
1- ListBox llamado LstDatos
con propiedades siguientes:
.ColumnCount = 3
.ColumnsHeads = True
.ListStyle = 1-fmListStyleOption
.MultiSelect = 1-fmMultiSelectMulti
.RowSource = Tabla1

y
2- un CommandButton llamado cmdReg

VBA: Recuperar columna de un ListBox



Insertamos en la ventana de código del UserForm el evento siguiente asociado al CommandButton

Private Sub cmdReg_Click()
Dim i As Integer, contador As Integer
Dim txt As String

contador = 0
'recorremos los elementos del ListBox
For i = 0 To Me.LstDatos.ListCount - 1
    'verificamos si está seleccionado
    If Me.LstDatos.Selected(i) = True Then
        'en caso afirmativo recuperamos el dato de la columna 3 (0,1,2)
        txt = txt & Me.LstDatos.List(i, 2) & vbCrLf
        'y aumentamos el conatdor.
        contador = contador + 1
    End If
Next i

'devolvemos a un MsgBox los resultados....
MsgBox "Has seleccionado los siguientes " & contador & " elementos" & vbCrLf & txt

End Sub



El resultado tras seleccionar uno o varios elementos del listbox es un mensaje con los valores de la tercera columna listado...

VBA: Recuperar columna de un ListBox

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.