Selección multiple con ComboBox

21/02/2007 - 16:40 por Bart | Informe spam
Hola Grupo:

En un userform tengo varios ComboBox pero uno de esos debe ser de selección
multiple, es decir, tomar varios valores del listado, puede ser 1 o varios.

Cómo hago para hacer esto y que debo hacer para poder determinar que items
fueron seleccionados. Adicionalmente, en este ComboBox debe aparecer por
'Default' todos los items seleccionados al desplegar inicialmente la grilla,
cómo lo puedo hacer?.

Gracias por sus comentarios,

Bart
 

Leer las respuestas

#1 Ivan
21/02/2007 - 17:44 | Informe spam
hola Bart,

En un userform tengo varios ComboBox pero uno de esos debe ser de
selección
multiple,



no estoy seguro del todo, pero si no me equivoco un ComboBox no admite la
seleccion multiple. Para ello deberias usar un ListBox, que podrias
configurar con la apariencia de un combo (aunque sin poder editar las
entradas), y establecer su propiedad 'Multiselect' en true, y si quieres que
aparezcan casillas de verificacion, su propiedad 'ListStyle' en '
fmListStyleOption'

Cómo hago para hacer esto y que debo hacer para poder determinar que items
fueron seleccionados. Adicionalmente, en este ComboBox debe aparecer por
'Default' todos los items seleccionados al desplegar inicialmente la
grilla,




usando la propiedad 'Selected' del ListBox. Podrias hacer algo parecido a
esto ->

a) para el ejemplo inserta un nuevo Userform con un listbox y dos
commandbutton, y en una hoja selecciona algunos datos

b) en el modulo del formulario copias/pegas este codigo, que aunque no va
comentado es bastante sencillo de entender si recurres a la ayuda (F1). De
todas formas si tienes dudas comentas.

'********************************
Private Sub CommandButton1_Click()
NombrarElegidos
End Sub
'**********************************
Private Sub CommandButton2_Click()
With CommandButton2
Select Case .Caption
Case "Cargar": CargarListBox: .Caption = "Descargar"
Case "Descargar": ListBox1.Clear: .Caption = "Cargar"
End Select
End With
End Sub
'******************************************************
Private Sub CargarListBox() ' es igualmente valido para un ComboBox
Dim celda As Range
With ListBox1
.Clear
For Each celda In Selection
.AddItem celda.Value
Next
End With
End Sub
'*****************************************************
Private Sub NombrarElegidos()
Dim sel As Integer, msj As String
With ListBox1
If .ListCount = 0 Then
msj = "La lista esta vacia"
Else
For sel = 0 To .ListCount - 1
If .Selected(sel) Then msj = msj & .List(sel) & vbCr
Next
If msj = "" Then msj = "No hay ninguna entrada seleccionada" Else _
msj = "Las entradas seleccionadas son:" & vbCr & vbCr & msj
End If
End With
MsgBox msj
End Sub
'******************************************************
Private Sub UserForm_Initialize()
CommandButton1.Caption = "Ver seleccionados"
CommandButton2.Caption = "Descargar"
With ListBox1
.MultiSelect = fmMultiSelectMulti
.ListStyle = fmListStyleOption
.Height = 18
End With
CargarListBox
End Sub
'****************************************************

espero te ayude en algo, y si quieres/tienes comentas las dudas

un saludo y hasta pronto
Ivan

Preguntas similares