Professional Documents
Culture Documents
Anuncios Google
Excel Microsoft
3
Excel 2007
Buscar en el blog
Si la inform acin que has e ncontrado e n e ste blog ha sido de tu inte r s, te agrade ce ra que de jase s un com e ntario ;-)
haremos lo siguiente: Desde excel, seleccionaremos Ver, a continuacin Barras de herramientas, y seguidamente Cuadro de controles, tal y como aparece en la figura de la izquierda. Seleccionaremos el control llamado Cuadro combinado (acercando el ratn a cada control, nos aparecer el nombre de cada uno de ellos). Una vez seleccionado, dibujaremos el combobox en la hoja de clculo, dndole el tamao y posicin que deseemos. Arriba a la izquierda, en la barra de frmulas, nos aparecer su nombre, por defecto ComboBoxY, donde Y es un nmero correlativo, de tal forma que si es nuestro primer combobox, se llamar ComboBox1, si es el 2, se llamar ComboBox2, y as sucesivamente. Para el primer caso, es decir, si queremos llenar el combobox con los datos de un rango fijo, entonces lo tenemos
bien fcil. Imaginemos que tenemos un rango con datos que va de I8 a I10, y queremos que esos valores almacenados en esas celdas (en las 3 celdas: I8, I9, e I10), sean los que aparezcan en nuestro combobox. Supongamos que estamos trabajando con un combobox que se llama ComboBox3. En ese caso, el cdigo que podramos utilizar sera este (estoy suponiendo que el combobox no est insertado dentro de un UserForm, porque en ese caso, el cdigo sera algo distinto, ya que utilizaramos RowSource , en lugar de usar ListFillRange ), y desde la pantalla para VBA, lo pegaramos en la hoja1, que es donde tenemos nuestro combobox, y no en un mdulo:
Private Sub C om boBox 3_GotFocus() 'Este cdigo se e je cutar cada ve z que 'nos situe m os sobre e l com bobox C om boBox 3.ListFillR ange = "I8:I10" C om boBox .R owSource End Sub
Anuncios Google
Si por el contrario, el rango que alimenta el combobox es dinmico, deberemos aadir los elementos al combobox, mediante el mtodo AddItem . Supongamos por ejemplo que tenemos un libro con 3 hojas y queremos que en nuestro combobox nos aparezcan los nombres de esas tres hojas. En ese caso, el cdigo del combobox (en este caso, nuestro ComboBox1) sera el siguiente (estamos haciendo un combobox directamente sobre nuestra hoja de clculo, y no insertado dentro de un formulario), y que tendramos que pegar desde VBA, en la hoja1, que es donde tenemos nuestro combobox, y no en un mdulo:
Private Sub C om boBox 1_GotFocus() 'Esto se producir cuando nos 'situe m os sobre e l com bobox 1 '********* Lle nam os e l com bobox 1 ********* 'ante s quitare m os todo lo que haya e n e l com bobox 1 C om boBox 1.C le ar
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
1/9
7/16/13
capital constante Calcular el VAN, para periodos irregulares Calculadora de tiempos Habilitar y deshabilitar controles de un formulario La hoja de clculo Calcular la TAE Calcular la TIR de una inversin, para periodos irregulares Prstamos y clculo de hipotecas Modificar datos, utilizando un formulario Protegiendo nuestros trabajos en Excel Introducir datos usando un formulario Calendarios para imprimir Enviar un email desde Excel Ejecutar una macro a una hora determinada Obtener datos de una pgina web Ejecutar macro al seleccionar un elemento de un combobox Espacio libre y espacio total en disco Validar la entrada de datos en un formulario Ejecutar varias macros a la vez Forzar la escritura en maysculas (o minsculas) Nmeros aleatorios no repetidos Fecha de creacin, modificacin, ltimo acceso, y peso en Kb de un fichero Leer otro fichero excel Formularios dinmicos Calcular la TIR y el VAN Buscar hojas ocultas Informar de que est ejecutndose un macro Obtener el nombre del PC Leer las tablas de una base de datos Access Compactar una base de datos Access, desde Excel Ejecutar un macro al cambiar una celda Importar datos concretos de un fichero de texto Combinar correspondencia con Excel y Word Calcular el vencimiento real de facturas Ponerle un nombre a las celdas Combobox: sacndoles provecho Usuarios, hojas, y permisos Asociar un macro a un botn Solver: clculo de la TIR Combobox dependientes Horas de 100 minutos, y conversin de unidades de tiempo Impedir que se cambie el nombre a una hoja Evolucin de un capital a inters simple e inters compuesto Euroconversor Listar los archivos de un directorio Convertir unidades de tiempo a formato hh:mm:ss Calcular el umbral de rentabilidad, con excel Llenar dinmicamente un combobox Control horario: horas normales, y horas extras HP iPaq 614C, con excel en el bolsillo
Con ese cdigo, recorremos los nombres de las hojas, y se cargarn en el combobox, cada vez que ste reciba el foco (cada vez que nos situemos sobre l). Si deseamos que se ejecute cierta accin, cada vez que elijamos un elemento de la lista de ese ComboBox2, aadiremos el cdigo que proceda, tambin dentro de la hoja1. En nuestro caso, cada elemento corresponde a una hoja de clculo del libro, y eso ser lo que nos aparezca en el desplegable del combobox. Nosotros mostraremos un mensaje, aunque podramos haber hecho cualquier cosa: ir a la hoja en cuestin, eliminar la hoja, copiarla, etc:
Private Sub C om boBox 1_C lick () 'Mostram os un m e nsaje MsgBox ("Has he cho clic sobre : " & C om boBox 1.List(C om boBox 1.ListInde x )) End Sub
Si lo que deseamos es llenar dinmicamente un combobox a travs de los datos que hay en un rango de celdas continuo, entonces haremos lo siguiente (suponemos que nuestro combobox se llama ComboBox2, y que est insertado directamente en la hoja de clculo, y no en un formulario), pegndolo en la hoja1 que es donde tenemos nuestro combobox:
Private Sub com bobox 2_gotfocus() 'O cultam os e l proce dim ie nto Application.Scre e nUpdating = False 'ficham os la ce lda donde e stam os, para volve r a e lla ce lda = Active C e ll.Addre ss 'Esto se producir cuando nos 'situe m os sobre e l com bobox 2 '********* Lle nam os e l com bobox 2 ********* 'ante s quitare m os todo lo que haya e n e l com bobox 2 C om boBox 2.C le ar 'Vam os a lle nar dinm icam e nte e l com bobox 'con los datos de la ce lda F8 e n ade lante '(sie m pre que los datos se an continuos) R ange ("F8").Se le ct Do W hile Not IsEm pty(Active C e ll) 'Aadim os los nom bre s de las hojas al com bobox C om boBox 2.AddIte m Active C e ll 'bajam os una fila Active C e ll.O ffse t(1, 0).Se le ct Loop 'volve m os donde e stbam os R ange (ce lda).Se le ct 'Mostram os e l proce dim ie nto Application.Scre e nUpdating = True End Sub
Si deseamos que se ejecute cierta accin, cada vez que elijamos un elemento de la lista de ese ComboBox3, aadiremos el cdigo que proceda, tambin dentro de la hoja1. En nuestro caso, cada elemento corresponde a los datos que hay desde F8 en adelante (rango continuo de datos), y eso ser lo que nos aparezca en el desplegable del combobox. Nosotros mostraremos un mensaje, aunque podramos haber hecho cualquier otra cosa:
Private Sub C om boBox 2_C lick () 'Mostram os un m e nsaje MsgBox ("Has he cho clic sobre : " & C om boBox 1.List(C om boBox 2.ListInde x )) End Sub
A modo de resumen, hoy hemos visto varias cosas nuevas: a) Cmo crear un combobox, sin necesidad de insertarlo dentro de un UserForm. b) Cmo llenar un combobox de forma dinmica, sin tener que tocar el cdigo cada vez que cambien las dimensiones del rango de datos que lo alimentan.
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
2/9
7/16/13
Mostrar y ocultar hojas, utilizando macros Controlar los cambios en ficheros compartidos Mostrar imgenes asociadas a un desplegable Validacin de listas dependientes Saber si existe un fichero Convertir unidades de tiempo: horas, minutos, y segundos Validacin con datos en otra hoja Crear un grfico, con un macro Mi primer Combobox El libro PERSONAL.XLS (XLSB) Formularios inteligentes Ms sobre las funciones de bases de datos personalizadas Funciones de bases de datos personalizadas Volviendo con los nmeros aleatorios Sencilla aplicacin en excel Leer el nmero de serie de los discos Trabajando con horas, minutos, y segundos Ocultar filas y columnas, mediante macros Simultanear filas de colores Leer una base de datos Access Calcular la letra del NIF/DNI Leer un fichero de texto plano Desplazarse por las hojas, utilizando macros Impedir que se cambie el nombre al fichero Uso de la funcin BDContar Mostrar un mensaje en la barra de estado Eliminar filas vacas Crear hojas con un clic Grabar datos en un fichero de texto Tiempo transcurrido entre dos fechas Omitir los avisos al ejecutar un macro Mi primer UserForm Nmeros de colores Poner la hora en una celda Pasar a maysculas o minsculas Creando nuestro propio buscador Extraer la inicial de cada palabra Ocultar hojas para que no se vean Contar las hojas de un libro Nombre del da Proteger un libro de excel Proteger y desproteger una hoja de clculo, sin macros Impedir que se cierre excel Contar palabras Introducir nmeros pares Introducir valores nicos (no repetidos) Macro al abrir o al cerrar un libro Ir a una celda, de forma aleatoria Volver donde estbamos inicialmente Impedir que se cierre un formulario Evitar la cancelacin de un macro Nmero aleatorio, con efecto tragaperras Proteger y desproteger con macros Verificar si existe hoja de clculo Recorrer fila a fila Obtener ruta, nombre del fichero, y hoja Obtener nombre de la hoja Macros sin refresco de pantalla
macros en excel
39 comentarios: jose dijo... Hola! Estoy haciendo un ejemplo parecido a este. Pero en el combobox en vez de elejir una hoja del libro,me saldria una hoja de calculo. Todas las hojas de calculo estan metidas en el mismo directorio. Ya que de esta hoja necesito guardar una celda en la hoja de calculo que llama a la macro. 5 de noviembre de 2008 18:56 Javier Marco dijo... Para hacer eso, necesitars saber como funciona el objeto filesystemobject. En este mismo blog hay un artculo donde explico como crear carpetas desde excel, usando el objeto filesystemobject (fso). Usando el objeto fso, puedes recorrer un directorio, pasando a una matriz o a una variable, las hojas de clculo que encuentre en el directorio de que se trate, y luego puedes volcarlas como items en el combobox. Googlea sobre el objeto filesystemobject. Un saludo. 5 de noviembre de 2008 19:05 Annimo dijo... Jose yo quier hacer algo mas o menos como tu. Pero en vez de abrir la pagina quiero que solo me la lea. E Importar tres celdas a la hoja de calculo desde donde llamo la macro. Cuando lo tengas a ver si puedes colgar una parte del codigo. Gracias. Esta pagina esta muy bien. 19 de noviembre de 2008 00:30 Javier Marco dijo... En el artculo sobre como listar los ficheros de un directorio, tenis una pista valiossima. Entre este artculo, y el del enlace que os acabo de dejar, lo tenis facilito, pues ah est todo lo imprescindible para desarrollar el macro. Un saludo. 19 de noviembre de 2008 09:15 Annimo dijo... y que hago si lo que quiero es llenar dinamicamente un combobox pero de una UserForm?....necesito llenar 2, una con el nombre de las hojas y otra con una listado cosas 27 de enero de 2009 21:08 Javier Marco dijo... Pues hay varias entradas relativas al uso de los combobox. chales un vistazo, aunque este artculo que has ledo es el que ms te va a servir. Las diferencias no son muchas (mirando el cdigo de los otros artculos, seguro que lo
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
3/9
7/16/13
Mi primer macro en excel Obtener nombre del fichero Crear carpetas desde excel Separar cadenas de texto Desproteger hoja de clculo Contar el nmero de caracteres Mostrar la fecha de hoy Presentacin del blog Webs int eresant es www.con2huevos.com Trucos de cocina vehiculosclasicos.blogspot.com Cuentos infantiles Recetas de cocina Sevilla Monumentos de Sevilla Hostales en Sevilla hoteles Sevilla ocio y cultura Emoticonos animados emoticones
Bscanos en Facebook
Macros en Excel
Me gusta A 1 685 personas les gusta Macros en Excel.
Saludos. 29 de enero de 2009 17:41 Annimo dijo... Hola Javier, he aprendido nuevas cosas con cada uno de los procedimientos que mencionas en tu blog. Quisiera ver si me pudieras ayudar en lo siguiente. Estoy creando un archivo para declaracin de produccion, en el cual tengo varios commandbutton. Lo que necesito es que una vez que seleccionan un commandbutton los demas se bloquean, ademas de cambiar los colores de los commandbutton no seleccionados, para diferenciarlos del seleccionado. Esto ya lo he hecho, pero me resulta muy problematico el estar modificando los parametros de color y deshabilitar los commandbutton por cada uno de los botones. Y lo que quisiera es solamente con poner el nombre CommandButton(X).BackColor = RGB(146, 156, 154), donde X es el numero de boton se cambie hasta completar un ciclo de 20 ms botones, como lo podria hacer para no generarlo como lo estoy haciendo: Te mando como lo estoy haciendo:
Sub color()
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
4/9
7/16/13
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
5/9
7/16/13
Frank dijo...
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
6/9
7/16/13
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
7/9
7/16/13
Pipe dijo...
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
8/9
7/16/13
Pgina principal
Entrada antigua
Anuncios Google Excel VBA Code Excel VBA Examples Excel hoja VBA
www.hojasdecalculoexcel.com/2008/10/llenar-dinamicamente-un-combobox.html
9/9