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

#6 Héctor Miguel
07/10/2008 - 23:16 | Informe spam
hola, 'anonimo/a' !

Me estoy liando, tengo nociones de c++ pero el vb me deja frito
este el codigo que he puesto pero me da un error en la linea:

"""""""""""""""""Set cboTemp > ws.OLEObjects("TempCombo")""""""""""""""""""""""""

El codigo a continuacion: (...)



no alcanzo a "captar" el por que "mezclas" eventos de hoja (_selectionchange y _beforedoubleclick)
-> con objetos incrustados y ademas con reglas de validacion -???-

no era la intencion "evitar" las reglas de validacion ???

quizas si comentas con mayores detalles lo que "realmente" buscas solucionar ???

saludos,
hector.
Respuesta Responder a este mensaje
#7 Héctor Miguel
07/10/2008 - 23:16 | Informe spam
hola, 'anonimo/a' !

Me estoy liando, tengo nociones de c++ pero el vb me deja frito
este el codigo que he puesto pero me da un error en la linea:

"""""""""""""""""Set cboTemp > ws.OLEObjects("TempCombo")""""""""""""""""""""""""

El codigo a continuacion: (...)



no alcanzo a "captar" el por que "mezclas" eventos de hoja (_selectionchange y _beforedoubleclick)
-> con objetos incrustados y ademas con reglas de validacion -???-

no era la intencion "evitar" las reglas de validacion ???

quizas si comentas con mayores detalles lo que "realmente" buscas solucionar ???

saludos,
hector.
Respuesta Responder a este mensaje
#8 atlanticoingenieros
08/10/2008 - 09:14 | Informe spam
On 7 oct, 23:16, "Héctor Miguel"
wrote:
hola, 'anonimo/a' !

> Me estoy liando, tengo nociones de c++ pero el vb me deja frito
> este el codigo que he puesto pero me da un error en la linea:

> """""""""""""""""Set cboTemp > > ws.OLEObjects("TempCombo")""""""""""""""""""""""""

> El codigo a continuacion:    (...)

no alcanzo a "captar" el por que "mezclas" eventos de hoja (_selectionchange y _beforedoubleclick)
-> con objetos incrustados y ademas con reglas de validacion    -???-

no era la intencion "evitar" las reglas de validacion ???

quizas si comentas con mayores detalles lo que "realmente" buscas solucionar ???

saludos,
hector.



La verdad no lo se, he estado leyendo el mensaje que me recomendasteis
("Validaciones de Multiples celdas con ComboBox" ) y me he liado ahora
estoy peor que al principio.

Resumiendo:

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

Gracias por la ayuda
Respuesta Responder a este mensaje
#9 Héctor Miguel
08/10/2008 - 22:42 | Informe spam
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 el combobox se 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 control combobox (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
#10 atlanticoingenieros
09/10/2008 - 10:51 | Informe spam
On 8 oct, 22: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



Voy a trastear con lo que me has dicho. Por cierto:¿Alguien conoce
algun curso por internet que sea bueno de vba o excel avanzado??
No me refiero a un tutorial, sino a un curso con sus profesores,
tareas Ya que me va a costar dinero quiero que sea eficaz.

Saludos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida