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.
> ... 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.
aqui encuentras varias conversaciones que tratan sobre el asunto que planteas -> http://tinyurl.com/3qagke
saludos,
hector.
Quiero que el combo box aparezca en el mismo sitio donde esta la celda
y que cuando elija desaparezca hasta que pique en la celda siguiente y
vuelva a aparecer en la celda siguiente, ya que si la lista es muy
larga tengo que ir hasta arriba.
saludos y gracias.
> ... falta un detalle:
> Quiero que el combo box aparezca en el mismo sitio donde esta la celda
> y que cuando elija desaparezca hasta que pique en la celda siguiente y vuelva a aparecer en la celda siguiente
> ya que si la lista es muy larga tengo que ir hasta arriba...
en el mismo enlace que apunta a varias consultas, hay una con asungo de:
"Validaciones de Multiples celdas con ComboBox"
(segun yo) es exactamente lo que solicitas (solo que no viste suficientes conversaciones)
saludos,
hector
On 7 oct, 03:28, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:
Me estoy liando, tengo nociones de c++ pero el vb me deja frito, este
es el codigo que he puesto pero me da un error en la linea:
"""""""""""""""""Set cboTemp =
ws.OLEObjects("TempCombo")""""""""""""""""""""""""
Gracias por la ayuda.
El codigo a continuación:
Private Sub ComboBox1_Change()
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
Private Sub ComboBox1_GotFocus()
If ActiveCell.Column = 8 Then
ComboBox1.ListFillRange = "RAZONSOCIAL2"
ComboBox1.LinkedCell = ActiveCell.Address
Else: ComboBox1.LinkedCell = ""
End If
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then SendKeys "{esc}"
End Sub
Private Sub ComboBox1_LostFocus()
ComboBox1.ListFillRange = ""
ComboBox1.LinkedCell = ""
ComboBox1 = ""
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
Cancel = True
Set cboTemp = ws.OLEObjects("TempCombo")
On Error Resume Next
With cboTemp
'clear and hide the combo box
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
End With
On Error GoTo errHandler
If Target.Validation.Type = 3 Then
'if the cell contains a data validation list
Application.EnableEvents = False
'get the data validation formula
str = Target.Validation.Formula1
str = Right(str, Len(str) - 1)
With cboTemp
'show the combobox with the list
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Height = Target.Height + 5
.ListFillRange = ws.Range(str).Address
.LinkedCell = Target.Address
End With
cboTemp.Activate
End If
errHandler:
Application.EnableEvents = True
Exit Sub
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
Set cboTemp = ws.OLEObjects("TempCombo")
On Error Resume Next
If cboTemp.Visible = True Then
With cboTemp
.Top = 10
.Left = 10
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
End With
End If
errHandler:
Application.EnableEvents = True
Exit Sub
End Sub
> 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.
> 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")""""""""""""""""""""""""
>
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
> 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, _
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.
> 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.
aqui... "yo paso" (la estafeta) para alguien con mas experiencia en la "toma de cursos" :D
(para mi...) calificar algun curso como "eficaz" (segun su costo ?) es meramente subjetivo y circunstancial...
todo depende de "donde estas"... "hasta donde quieres llegar"... y "que estas dispuesto a hacer" ;)
lo que si te puedo decir, es que (para mi) los libros y los cursos...
- los escriben/imparten "aquellos que SI..."
- estan dirigidos para todos "aquellos que NO..."
-> le han dedicado tiempo a los manuales que vienen "empaquetados" en cada aplicacion
(que por cierto)... dicho manual/ayuda/... {F1} "debiera" ser tu primer fuente de informacion ;)
saludos,
hector.
Oido cocina, pero que sepas que soy un fanatico de la ayuda, aunque no
es todo l o extensa que yo quisiera.
> Oido cocina...
=> cuyo significado "es"... ???
> pero que sepas que soy un fanatico de la ayuda, aunque no es todo lo extensa que yo quisiera.
=> (en mi humilde opinion)... un manual lo entiende "mas"... (generalmente) quien mas lo consulta
estoy de acuerdo en que (casi ?) ningun manual "cubre" TODOS los niveles de entendimiento del consultante
(aunque te puedo asegurar que "pasa lo mismo" con "otros" manuales/libros/cursos/... etc.)
=> en tanto aparece alguien con alguna sugerencia mas concreta... prueba:
- visita la pagina de MS (en ingles o segun tu idioma/localizacion/...)
- abre/busca/activa/... la seccion de office/excel/...
- usa la ficha/pestaña/seccion/... de "Ayuda y procedimientos"
- utiliza el buscador por algun "tema" en especifico... y comienza a navegar por las ofertas disponibles ;)
saludos,
hector.
__ OP __
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.
Ahora tengo que seguir desarrollando mi mini aplicacion de
contabilidad, ya ire pidiendo ayuda.
Ahora en serio alguien se anima a desarrollarmela por unos €€€€???
Escucho ofertas.
Oido cocina significa algo asi como que te das por enterado.
> 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.
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
> ... 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 __
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
> 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 __