combobox avanzado

06/10/2008 - 12:55 por atlanticoingenieros | Informe spam
Hola a todos, tengo una duda que espero me resolvais, se trata de que
tengo un combobox alimentado por una lista con nombre que he creado
gracias al blog http://jldexcelsp.blogspot.com/ y de momento funciona
muy bien.

Quiero ir un poco mas alla pero no se como, lo que quiero lograr es
que en una columna concreta de mi hoja, cada vez que pinche en una
celda de esa columna aparezca el combobox me de a elegir una opcion y
una vez elegida la guarde en esa celda.

Saludos a todos.

Preguntas similare

Leer las respuestas

#16 Héctor Miguel
10/10/2008 - 03:48 | Informe spam
hola, (...) ????????????

Por fin lo he arreglado, no se que pasaba que la hoja 1 se habia convertido en hoja2 o yo que se!!
me he dado cuenta al ponerle nombre a las hojas.



cuando pasa ?... por ejemplo: cuando en un libro ya guardado con una sola hoja (hoja1)
- le insertas una nueva hoja de calculo (hoja2) que normalmente queda a la izquierda (de la hoja1)
- guardas el libro (SIN cambiar de posicion las hojas: hoja2 -> hoja1) y lo cierras
- abres de nuevo el libro y el "orden" en el editor de vba sera "bizarro"...
hoja2 (hoja1)
hoja1 (hoja2)

Ahora tengo que seguir desarrollando mi mini aplicacion de contabilidad, ya ire pidiendo ayuda...



ok... no te olvides de comentar cuanto detalle sea necesario (para poder re/crear tu modelo desde este lado)

saludos,
hector.
Respuesta Responder a este mensaje
#17 Roberto Miranda
17/10/2008 - 22:36 | Informe spam
On 8 oct, 14:42, "Héctor Miguel"
wrote:
hola, 'anonimo/a' !

> Resumiendo:
> Lo de la validacion no lo quiero porque entonces tendria que elegir a priori las celdas donde va la validacion
> y yo quiero que elcomboboxse muestre ne todas las celdas de una misma columna a medida que pique en ellas
> y deje el valor elegido en esa misma celda.
> ... una cosa que no se explicar pongo en la propiedad correspondiente el 1-frmMatchEntryComplete y no me autocompleta.

asumiendo que en "alguna" hoja existe un rango con el nombre "RAZONSOCIAL2" que seran los elementos en la lista del combo
y que en "alguna" hoja ya incrustaste un controlcombobox(de la barra de herramientas cuadro de controles) llamado ComboBox1
y que pretendes que el combo solo se active cuando la celda activa este en la columna 8 (H) y despues de la fila 1    -???-
(inclusive) podrias escribir en el combo nombres que NO existan en el listado (pero)
-> aun cuando los escribas (en el combo) y los plantes (en la celda activa) seguiran "ausentes" en el listado <-

copia/pega las siguientes instrucciones en el modulo de codigo de "la hoja" donde esta incrustado el combo:
OJO: el combo se muestra en la columna siguiente a la celda donde se deposita la seleccion...

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

' para que el combo se aparezca en la celda contigua a la columna H y despues de la fila 1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  ComboBox1.Visible = False
  If Target.Count > 1 Then ActiveCell.Select
  If ActiveCell.Column <> 8 Or ActiveCell.Row = 1 Then Exit Sub
  With ActiveCell.Offset(, 1)
    ComboBox1.Left = .Left
    ComboBox1.Top = .Top - 1
    ComboBox1.Visible = True
  End With
End Sub

' el combo se llena SOLO cuando la celda activa es de la columna 8 [H] '
Private Sub ComboBox1_GotFocus()
  If ActiveCell.Column = 8 Then
    ComboBox1.ListFillRange = "razonsocial2"
    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



Buenas tardes, en este código que planteás, como hacer para restringir
nombres que no estén en el listado?

Muy Agradecido

Roberto Miranda
Respuesta Responder a este mensaje
#18 Héctor Miguel
17/10/2008 - 22:53 | Informe spam
hola, Roberto !

... en este codigo que planteás, como hacer para restringir nombres que no esten en el listado?



en las propiedades del combobox, cambia su propiedad "Style" (para que no se pueda teclear en el)...
de: -> 0 - fmStyleDropDownCombo
a: -> 2 - fmStyleDropDownList

saludos,
hector.

__ consultas anteriores __
hola, 'anonimo/a' !

Resumiendo:
Lo de la validacion no lo quiero porque entonces tendria que elegir a priori las celdas donde va la validacion
y yo quiero que elcomboboxse muestre ne todas las celdas de una misma columna a medida que pique en ellas
y deje el valor elegido en esa misma celda.
... una cosa que no se explicar pongo en la propiedad correspondiente el 1-frmMatchEntryComplete y no me autocompleta.



asumiendo que en "alguna" hoja existe un rango con el nombre "RAZONSOCIAL2" que seran los elementos en la lista del combo
y que en "alguna" hoja ya incrustaste un controlcombobox(de la barra de herramientas cuadro de controles) llamado ComboBox1
y que pretendes que el combo solo se active cuando la celda activa este en la columna 8 (H) y despues de la fila 1 -???-
(inclusive) podrias escribir en el combo nombres que NO existan en el listado (pero)
-> aun cuando los escribas (en el combo) y los plantes (en la celda activa) seguiran "ausentes" en el listado <-

copia/pega las siguientes instrucciones en el modulo de codigo de "la hoja" donde esta incrustado el combo:
OJO: el combo se muestra en la columna siguiente a la celda donde se deposita la seleccion...

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

' para que el combo se aparezca en la celda contigua a la columna H y despues de la fila 1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ComboBox1.Visible = False
If Target.Count > 1 Then ActiveCell.Select
If ActiveCell.Column <> 8 Or ActiveCell.Row = 1 Then Exit Sub
With ActiveCell.Offset(, 1)
ComboBox1.Left = .Left
ComboBox1.Top = .Top - 1
ComboBox1.Visible = True
End With
End Sub

' el combo se llena SOLO cuando la celda activa es de la columna 8 [H] '
Private Sub ComboBox1_GotFocus()
If ActiveCell.Column = 8 Then
ComboBox1.ListFillRange = "razonsocial2"
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
Respuesta Responder a este mensaje
#19 Roberto Miranda
17/10/2008 - 23:26 | Informe spam
On 17 oct, 14:53, "Héctor Miguel"
wrote:
hola, Roberto !

> ... en este codigo que planteás, como hacer para restringir nombres que no esten en el listado?

en las propiedades del combobox, cambia su propiedad "Style" (para que no se pueda teclear en el)...
de: -> 0 - fmStyleDropDownCombo
  a: -> 2 - fmStyleDropDownList

saludos,
hector.




Lo único que no queda amigable para el usuario, al tener que
"obligadamente" (si no está ordenado) buscar item x item y
seleccionarlo,


Roberto Miranda
Respuesta Responder a este mensaje
#20 Héctor Miguel
18/10/2008 - 00:55 | Informe spam
hola, Roberto !

Lo unico que no queda amigable para el usuario, al tener que "obligadamente"
(si no está ordenado) buscar item x item y seleccionarlo,



(hasta donde se...) todo (o casi todo) tiene "pros" y "contras" :))

op1: ordenar el listado de origen
op2: "cargar" los datos en el combo ordenando desde una matriz "al vuelo"
op_n: depende de... ???

saludos,
hector.

__ OP __
... en este codigo que planteás, como hacer para restringir nombres que no esten en el listado?



en las propiedades del combobox, cambia su propiedad "Style" (para que no se pueda teclear en el)...
de: -> 0 - fmStyleDropDownCombo
a: -> 2 - fmStyleDropDownList
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida