Como validar y que a la vez autocomplete....

15/09/2003 - 13:17 por Jose Ortiz | Informe spam
Hola a todos,

Lo que tengo es una hoja que contiene una columna (la A) donde tengo que
introducir nombres y apellidos, asi, para agilizar el proceso, me he escrito
en otra hoja todos los posibles nombres que voy a poner y he realizado una
validación con la opción de permitir - lista. Asi, cuando hago clic en una
celda de la columna a escribir, me voy al desplegable y eligo el nombre y
apellidos a poner.


Lo que quiero que me explicen los "Señores del Excel", es como hacer que
cuando empieze a escribir en las celdas de esa columna, me vaya apareciendo
los nombres y apellidos que cumplan lo que hasta el momento haya escrito,
(como cuando pones una direccion web en el navegador, que a medida que
escribes te va saliendo las posibles opciones) y tambien que si escribo
algun elemento que no este en la otra pagina lo añada para que lo pueda
seguir utilizando para otros libros y no tener que estar actulizando
constantemente.

Es un poco dificil pero espero que me resolvais esta pequeña cuestión!!


Un saludo y gracias por adelantado
 

Leer las respuestas

#1 Héctor Miguel
15/09/2003 - 21:22 | Informe spam
Hola, Jose !

... una hoja ... columna (A) ... tengo que introducir nombres y apellidos
... para agilizar ... en otra hoja ... los posibles nombres ... y ... una validacion ... de permitir - lista [...]
... hacer que cuando empieze a escribir ... vayan apareciendo los ... que cumplan lo que hasta el momento haya escrito [...]



==> [hasta donde yo se] el objeto que 'cumple' con esa caracteristica es un 'combobox' =>barra de 'cuadro de controles'< considerando que [de todas maneras] no te 'escaparias' de 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 <
==> 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 = "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.
MS-MVP

Preguntas similares