Ya no tienes que buscar más por todo internet porque estás al sitio adecuado, contamos con la solución que quieres encontrar pero sin problemas.
Solución:
Desafortunadamente para el cuadro de lista de MSForms, recorrer los elementos de la lista y verificar su propiedad Seleccionada es la única forma. Sin embargo, aquí hay una alternativa. Estoy almacenando/eliminando el elemento seleccionado en una variable, puede hacer esto en alguna celda remota y realizar un seguimiento 🙂
Dim StrSelection As String
Private Sub ListBox1_Change()
If ListBox1.Selected(ListBox1.ListIndex) Then
If StrSelection = "" Then
StrSelection = ListBox1.List(ListBox1.ListIndex)
Else
StrSelection = StrSelection & "," & ListBox1.List(ListBox1.ListIndex)
End If
Else
StrSelection = Replace(StrSelection, "," & ListBox1.List(ListBox1.ListIndex), "")
End If
End Sub
La respuesta aceptada no es suficiente porque si un usuario anula la selección de una fila, la lista no se actualiza en consecuencia.
Esto es lo que sugiero en su lugar:
Private Sub CommandButton2_Click()
Dim lItem As Long
For lItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lItem) = True Then
MsgBox(ListBox1.List(lItem))
End If
Next
End Sub
Cortesía de http://www.ozgrid.com/VBA/multi-select-listbox.htm
Si te gusta el asunto, puedes dejar un post acerca de qué le añadirías a esta crónica.