Excel

16/10/2003 - 00:27 por Alberto Gonzalez | Informe spam
Saludos a todos

Quisiera saber como puedo crear un cuadro combinado en una
hoja de excel y vincularlo a una celda variable.

Gracias por la atención que le presten a mi solicitud...
 

Leer las respuestas

#1 Héctor Miguel
16/10/2003 - 09:47 | Informe spam
Hola, Alberto !

... crear un cuadro combinado en una hoja de excel y vincularlo a una celda variable.



aunque 'faltarian' mas detalles, sigue un ejemplo que expuse pocos dias atras:
[te 'sugiero'] insertar un 'combobox' de la barra de herramientas 'cuadro de controles'
considerando que [de todas maneras] se necesitara usar codigo, podrias 'hacer' que [p.e.] ...
-o- lo que 'se escriba en' [o seleccione de] el combo, se 'aplique' a la celda activa [siempre que sea de la columna 1 ('a')]
-o- si la celda activa NO 'es' de la columna 'a', el combo NO 'tenga' nada 'que seleccionar' ;)
-o- el rango [en la 'otra' hoja] sea un nombre con referencia a un rango 'dinamico' [por si lo vas a seguir '[de-]creciendo'] ;)
p.e. en la 'otra' hoja [Hoja2???]
1) Insertar -> Nombres -> Definir
2) Nombre = "ListadoDeNombres"
3) Se refiere a: => =DesRef(Hoja2!A1,,,ContarA(Hoja2!A:A))
[inclusive] podrias escribir [en el combo] nombres que NO 'existan' en el listado [de 'la otra' hoja] ;)
=> aun cuando los escribas [en el combo] y los 'plantes' [en la celda activa] SEGUIRAN 'ausentes' en el listado <
en el modulo de codigo de 'la hoja' a la que 'pertenece' el combo ==' el combo 'se llena' SOLO cuando la celda activa es de la columna 1 ['a'] '
Private Sub ComboBox1_GotFocus()
If ActiveCell.Column = 1 Then
ComboBox1.ListFillRange = "ListadoDeNombres"
ComboBox1.LinkedCell = ActiveCell.Address
Else: ComboBox1.LinkedCell = ""
End If
End Sub
' el combo 'se vacia' [invariablemente] al 'terminar' la operacion '
Private Sub ComboBox1_LostFocus()
ComboBox1.ListFillRange = ""
ComboBox1.LinkedCell = ""
ComboBox1 = ""
End Sub
' para 'agilizar' la entrada de datos con la tecla {Enter} [cuando 'en' el combo] '
Private Sub ComboBox1_KeyDown( _
ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then SendKeys "{Esc}"
End Sub

Saludos,
Héctor.

Preguntas similares