# Crear un combo box simple.



## Gabriel Jazzis

Hola Juan Pa... primero queria agradecerte por este foro muy gueno que encontre por casualidades de la vida. Y por las preguntas y respuestas que he visto, creo que me quedo aqui, ya que no encontrado ni una pagina buena que hable sobre macros en Excel como esta.

 Bueno ahora a la pregunta.

Yo soy novato en esto de las macros, se de Visual, pero jamas me he metido en esto y quiero comenzar a aprenderlo. Y mi pregunta es de cómo hacer un simple combo box para listar una cantidad pequeña de nombres para que la persona que lo utilize, solo tenga que seleccionarlos de la lista y no tener que escribirlos. Pensando, se me ocurrió que podria anotar una pequeña BD de los nombres en otra hoja del mismo libro y crear el combo box a partir de este, pero no se dónde anotar las lineas de código, ni qué código tengo que anotar, ni cómo ejecutar la macro.

Gracias y te felicito por lo que estas haciendo. Que Dios te bendiga.


----------



## Juan Pablo González

Lo más facil es usar Validación de Datos.

Primero, en alguna hoja del libro, se pone la BD de los datos "admitidos".  Después, se selecciona este rango, y en el cuadro de nombre, a la izquierda de la barra de fórmulas, se le pone un nombre a este rango, algo como *Lista*

Luego, en la celda donde se quiere poner el ComboBox se va a Datos | Validación.

Ahí, se selecciona "Lista" y en el cuadro de abajo se pone

=Lista

y listo ! ya está funcionando... sin código, y sin nada complicado.

Saludos


----------



## Gabriel Jazzis

*Me resultó, pero...*

Está muy bien lo que me dijiste, pero sólo resulta en la hoja donde uno ingresa esos nombres, pero lo que yo necesito es tener esos nombres en una hoja a parte y de ahí linkearlos para poder usarlos en varias otras hojas. 

¿Si es posible?, también podría ser tener una pequeña BD en un fichero XLS a parte, donde pueda tener los items, nombres, etc. y de ahí linkearlos para poderlos usar en otros ficheros XLS y así automatizar mucho mejor el trabajo.

Te agradecería mucho si me lo pudieras explicar por favor, ya que no tengo ni idea de dónde sacar más información de esto y si es posible que yo te pueda ayudar en algo como JAVA, Visual Basic, etc. sólo me escribes a mi mail.

Gracias Juan Pablo. QDTB.


----------



## Juan Pablo González

Por eso dije que utilizando un rango "nombrado", Lista, no $A$1:$A$10

Cuando uno utiliza un rango "nombrado" la lista no tiene que estar en la misma hoja.

Ahora, para utilizar la lista en un libro diferente es básicamente lo mismo, pero en vez de definir Lista como

=Hoja1!$A$1:$A$10

se define como

=[Libro1.xls]Hoja1!$A$1:$A$10

donde Libro1.xls es el libro al que se quiere hacer referencia.


----------



## Gabriel Jazzis

*Gracias*

Muchas Gracias.


----------



## Gabriel Jazzis

*Una última pregunta.*

Cuando hago eso de linkear a través de otro libro (=[Libro1.xls]Hoja1!$A$1:$A$10), Excel me arroja un mensaje de error de fórmula y no me deja linkear. Lo que hago es lo siguiente:
- Ingreso los datos en un libro a parte.
- Guardo y cierro.
- Voy al libro que me interesa que tenga los datos.
- Ingreso lo siguiente "=[Base de Datos.xls]Empleados" o también lo hice "=[Base de Datos.xls]Hoja2!$A$2:$A$10".
- pero siempre me arroja un error de fórmula.

Disculpa las molestias.

Gracias. QDTB.


----------



## Juan Pablo González

Gabriel, el libro de base de datos debe estar abierto primero.  Y es más facil hacer esto:

En el libro "destino" ir a Insertar | Nombre, Definir...

En el primer cuadro poner el nombre, Lista
En la referencia escribir un igual '='
Después, con el mouse, ir a Ventana y seleccionar el otro libro, la base de datos
Ahí, de ser necesario, activar la ventana donde están los datos y luego seleccionar el rango que se quiere utilizar (A1:A10)

Listo, presionar "Agregar".

El rango debe quedar algo como 

='[Base de datos.xls]Hoja2'!$A$1:$A$10

y cuando se cierre el libro 'Base de Datos', Excel pondrá la ruta completa donde se encuentra este archivo.

Ojalá así sí sirva...


----------



## Gabriel Jazzis

*Esta si que es la última...*

Primero, gracias por la pasiencia que me has tenido.

Esta es la última pregunta que te hago con respecto a este tema. 

Bueno, ya tengo todo, pero me falta algo que es más dificil todavía.

Supongamos que tengo:

Código | Item
---------------------
001A     | Pera
001B     | Manzana

Lo que necesito es que con el procedimiento anterior de "Validar", yo pueda ingresar de una lista de códigos (como el anterior) el código 001A y que automáticamente en la celda de la derecha aparezca el item que pertenezca a ese código o sea Pera o vice versa.

Ahora si, disculpa por todas las molestias y te agradesco la ayuda. Entre informáticos debemos ayudarnos ¿no?

Gracias. QDTB.


----------



## Juan Pablo González

Si, se puede, usando BUSCARV o INDICE, pero dónde está el Item correspondiente ? en la base de datos también ? en la columna del lado ? o en cual ?


----------



## Gabriel Jazzis

*Te cuento...*

... tengo dos archivos xls:
- uno donde tengo la BD de los nombres en una hoja y otra hoja donde tengo una BD de productos con sus respectivos códigos o sea:

Base de Datos.xls -> Hoja 1 -> BD con productos con sus respectivos códigos -> ej: 0001A | Pera (donde 0001A es código y Pera su item, obviamente son muchos más items, pero te coloco uno para ahorrar espacio)

                           -> Hoja 2 -> BD con nombres -> ej: Gabriel Villacís.

Principal.xls -> Abril  (Hoja 1)-> detalle general del producto y la persona que lo compra -> ej:

Código | Producto | Nombre             |
----------------------------------------    |
0001A   | Pera        | Gabriel Villacís     |
    .       |      .         |        .                |
    .       |      .         |        .                |
    .       |      .         |        .                |
    .       |      .         |        .                |
    .       |      .         |        .                |
    .       |      .         |        .                |
    .       |      .         |        .                |
  etc.     |     etc.      |      etc.             |

                           Mayo (hoja 2) -> lo mismo que Abril
                           Junio (Hoja 3) -> etc.
                                  . 
                                   .
Y lo que necesito es que la persona que lo use solo tenga que seleccionar el código y aparezca automaticamente el Producto correspondiente y luego en el campo Nombre, la persona que la compro y eso es todo.

Espero que asi tengas una perspectiva mejor del dilema en que estoy y me puedas ayudar.

P.D.: hice lo que me habias dicho en la parte de Insertar -> Nombre -> Editar....... etc etc y obviamente habia que copiar la ruta que te daba despues de cerrar la BD y pegarla en "Validación", luego coloqué Aceptar y Excel me reclamo con lo siguiente "NO SE PUEDEN USAR REFERENCIAS A OTROS LIBROS U HOJAS PARA CRITERIOS DE VALIDACIÓN DE DATOS"
y entonces quedé encerrado denuevo con la duda.

Gracias. QDTB


----------



## Gabriel Jazzis

Hola Juan Pa... primero queria agradecerte por este foro muy gueno que encontre por casualidades de la vida. Y por las preguntas y respuestas que he visto, creo que me quedo aqui, ya que no encontrado ni una pagina buena que hable sobre macros en Excel como esta.

 Bueno ahora a la pregunta.

Yo soy novato en esto de las macros, se de Visual, pero jamas me he metido en esto y quiero comenzar a aprenderlo. Y mi pregunta es de cómo hacer un simple combo box para listar una cantidad pequeña de nombres para que la persona que lo utilize, solo tenga que seleccionarlos de la lista y no tener que escribirlos. Pensando, se me ocurrió que podria anotar una pequeña BD de los nombres en otra hoja del mismo libro y crear el combo box a partir de este, pero no se dónde anotar las lineas de código, ni qué código tengo que anotar, ni cómo ejecutar la macro.

Gracias y te felicito por lo que estas haciendo. Que Dios te bendiga.


----------



## Juan Pablo González

Gabriel,

Acabo de enviar un correo con los dos archivos, aunque creo que se está complicando mucho la cosa !! de pronto si será necesario utilizar algo más complejo ? o depronto Access inclusive, por la vinculación que hay entre las tablas...

Saludos


----------



## Gabriel Jazzis

*Gracias, ya lo tengo .............y el último problema*

Primero te agradezco la preocupación por mi problema.

Y el último problema que tengo es que necesito que al abrir el archivo Principal.xls, se abra automáticamente el archivo Base de Datos.xls, para que la persona que lo use no tenga que estar constantemente abriendo y cerrando los dos archivos y sólo abra el archivo Principal.xls.

Ahhhhhh a todo esto, se me ocurrió que en vez de usar la función INDICE, podría usar la función SI, con la condición de que el código selecciónado sea igual al código de la Basa de Datos.xls y me selecciona automáticamente el Producto correspondiente a dicho código.

Muchas Gracias por la atención y preocupación Juan Pablo. QDTB. :D


----------

