List Box

21/08/2009 - 16:03 por Angelo Vernaza | Informe spam
Hola Buenos Días,

Quiero crear un List Box el cual se active al darle click a cualquiera
celda del rango A6:A500, despues de activarlo la opicion que
seleccione sea colocada en la celda activa.

Si al momento de seleccionar un rango dentro del rango A6:A500 no sea
activado.

Saludos,
Angelo V.-

Preguntas similare

Leer las respuestas

#6 Angelo Vernaza
25/08/2009 - 20:03 | Informe spam
Hola Héctor,

Me hace falta lo siguiente:

1. Se puede cambiar el Combo Box por un List Box?
2. Si clickeo en una celda que no es del rango a6:a1000, todavia sigue
el combo apareciendo, deberia ocultarse.

Gracias de antemano por tu apoyo.

Saludos,
Angelo V.-

On 25 ago, 00:02, "Héctor Miguel"
wrote:
hola, Angelo !

> Al parecer si es lo que necesito, pero he tratado de hacer esto y no me funciona:

al parecer, lo unico que necesitas modificar es la primer linea en el procedimiento:
Private Sub ComboBox1_GotFocus()

de esto:
  If ActiveCell.Column = 1 Then

a esto:
  If Not Intersect(ActiveCell, Range("a6:a1000")) Is Nothing Then

has pruebas y... comentas ?
saludos,
hector.

__ OP (transcripcion de un post anterior)  __
- lo que se escriba en (o seleccione de) el combo, se aplique a la celda activa (siempre que sea de la columna 1 [a])
- si la celda activa NO es de la columna a, el combo NO tenga nada que seleccionar
- 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 <-

sigue un ejemplo para lograr lo expuesto (puede mejorarse y/o adaptarse segun necesidades)

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 = "Empleado"
    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

Pero no me esta funcionando, te especifico mas lo que tengo:

En la hoja "Tomadas" rango a6:a1000 cuando se active cualquier celda necesito que aparezca el ComboBox1
el cual debe tener la lista del rango que yo nombre "Empleado"

Al activar cual quiera otra celda que no sea del rango a6:a1000 que el ComboBox1 desaparezca?
Respuesta Responder a este mensaje
#7 Angelo Vernaza
25/08/2009 - 20:05 | Informe spam
Hector,

Ademas se me quedo lo siguiente, que al clikear entonces una de las
celdas del rango a6:a1000, el curso quede direccionado en el List Box,
para que al teclear un nombre de la lista el mismo ya quede
direccionado a la celda.

Saludos,
Angelo V.-

On 25 ago, 13:03, Angelo Vernaza wrote:
Hola Héctor,

Me hace falta lo siguiente:

1. Se puede cambiar el Combo Box por un List Box?
2. Si clickeo en una celda que no es del rango a6:a1000, todavia sigue
el combo apareciendo, deberia ocultarse.

Gracias de antemano por tu apoyo.

Saludos,
Angelo V.-

On 25 ago, 00:02, "Héctor Miguel"
wrote:



> hola, Angelo !

> > Al parecer si es lo que necesito, pero he tratado de hacer esto y no me funciona:

> al parecer, lo unico que necesitas modificar es la primer linea en el procedimiento:
> Private Sub ComboBox1_GotFocus()

> de esto:
>   If ActiveCell.Column = 1 Then

> a esto:
>   If Not Intersect(ActiveCell, Range("a6:a1000")) Is Nothing Then

> has pruebas y... comentas ?
> saludos,
> hector.

> __ OP (transcripcion de un post anterior)  __
> - lo que se escriba en (o seleccione de) el combo, se aplique a la celda activa (siempre que sea de la columna 1 [a])
> - si la celda activa NO es de la columna a, el combo NO tenga nada que seleccionar
> - 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 <-

> sigue un ejemplo para lograr lo expuesto (puede mejorarse y/o adaptarse segun necesidades)

> 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 = "Empleado"
>     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

> Pero no me esta funcionando, te especifico mas lo que tengo:

> En la hoja "Tomadas" rango a6:a1000 cuando se active cualquier celda necesito que aparezca el ComboBox1
> el cual debe tener la lista del rango que yo nombre "Empleado"

> Al activar cual quiera otra celda que no sea del rango a6:a1000 que el ComboBox1 desaparezca?- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#8 Héctor Miguel
26/08/2009 - 03:06 | Informe spam
hola, Angelo !

Ademas se me quedo lo siguiente
que al clikear entonces una de las celdas del rango a6:a1000, el cursor quede direccionado en el List Box
para que al teclear un nombre de la lista el mismo ya quede direccionado a la celda...



copia/pega las siguientes instrucciones en el modulo de codigo de "la hoja" donde esta incrustado el cuadro de lista:
OJO: el control se muestra en la columna siguiente a la celda y el ejemplo asume que el control se llama "ListBox1"
se puede salir/aceptar la seleccion pulsando {esc} / {enter} o haciendo doble-clic sobre el elemento seleccionado

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
With Me.ListBox1
If Not Intersect(ActiveCell, Range("a6:a1000")) Is Nothing Then
.Left = Target.Left + ActiveCell.Width + 2
.Top = ActiveCell.Top
.Visible = True
.ListFillRange = "empleado"
.LinkedCell = ActiveCell.Address
.Activate
Else
.Visible = False
.LinkedCell = ""
End If
End With
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
With Me.ListBox1
ActiveCell = .List(.ListIndex, 0)
.Visible = False
End With
ActiveCell.Select
End Sub

Private Sub ListBox1_KeyDown( _
ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then SendKeys "{esc}"
End Sub

Private Sub ListBox1_LostFocus()
ListBox1.Visible = False
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida