{"id":16538,"date":"2021-08-26T00:07:25","date_gmt":"2021-08-26T05:07:25","guid":{"rendered":"https:\/\/www.perucontable.com\/excelcontable\/?p=16538"},"modified":"2023-11-14T19:43:53","modified_gmt":"2023-11-15T00:43:53","slug":"como-cargar-datos-a-un-combobox-en-excel","status":"publish","type":"post","link":"https:\/\/www.perucontable.com\/excelcontable\/como-cargar-datos-a-un-combobox-en-excel\/","title":{"rendered":"\u00bfC\u00d3MO CARGAR DATOS A UN COMBOBOX EN EXCEL?"},"content":{"rendered":"\n<p>El&nbsp;<em>Cuadro combinado<\/em>, tambi\u00e9n conocido como ComboBox, es un control ActiveX que nos permite crear una lista desplegable de la cual podremos seleccionar alguno de sus elementos. Pero antes de poder utilizar este control, es necesario saber&nbsp;<strong>c\u00f3mo cargar datos a un ComboBox<\/strong>&nbsp;a partir de una lista de valores en una hoja de Excel.<\/p>\n\n\n\n<p>Para este ejemplo considerar\u00e9 dos posibles escenarios. El primero supone que el control ha sido agregado directamente a la hoja de Excel y el segundo escenario supondr\u00e1 que el ComboBox se ha insertado en un&nbsp;Formulario VBA. Para ambos casos tomar\u00e9 los valores de la columna A y los insertar\u00e9 como los elementos del cuadro combinado.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"319\" height=\"267\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-129.png\" alt=\"\" class=\"wp-image-16539\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-129.png 319w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-129-300x251.png 300w\" sizes=\"(max-width: 319px) 100vw, 319px\" \/><\/figure><\/div>\n\n\n<h2><strong>CUADRO COMBINADO EN VBA<\/strong><\/h2>\n\n\n\n<p>Excel tiene un control ActiveX conocido como&nbsp;<strong>Cuadro combinado<\/strong>&nbsp;el cual tambi\u00e9n es llamado com\u00fanmente por su nombre en ingl\u00e9s:&nbsp;<em>Combo Box<\/em>. Este control nos permite crear listas desplegables en nuestros formularios.<\/p>\n\n\n\n<p>Para insertar un&nbsp;<strong>Cuadro combinado<\/strong>&nbsp;debemos ir a la ficha Programador y dentro del bot\u00f3n Insertar pulsar el comando&nbsp;<em>Cuadro combinado (control ActiveX)<\/em>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"492\" height=\"313\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-130.png\" alt=\"\" class=\"wp-image-16543\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-130.png 492w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-130-300x191.png 300w\" sizes=\"(max-width: 492px) 100vw, 492px\" \/><\/figure><\/div>\n\n\n<p>Despu\u00e9s de dibujar el&nbsp;<strong>Cuadro combinado<\/strong>&nbsp;tendr\u00e1s un resultado como el siguiente:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"374\" height=\"165\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-131.png\" alt=\"\" class=\"wp-image-16545\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-131.png 374w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-131-300x132.png 300w\" sizes=\"(max-width: 374px) 100vw, 374px\" \/><\/figure><\/div>\n\n\n<h2><strong>CARGAR DATOS AL COMBOBOX EN UNA HOJA DE EXCEL<\/strong><\/h2>\n\n\n\n<p>El caso m\u00e1s simple es cuando has&nbsp;agregado el Cuadro combinado&nbsp;directamente a la hoja de Excel ya que para agregar sus elementos bastar\u00e1 con hacer clic derecho sobre el control ActiveX y seleccionar la opci\u00f3n&nbsp;<em>Propiedades<\/em>. Se mostrar\u00e1 el listado de propiedades y en la propiedad&nbsp;<em>ListFillRange<\/em>&nbsp;deber\u00e1s indicar el rango donde se encuentran los datos.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"381\" height=\"329\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-132.png\" alt=\"\" class=\"wp-image-16546\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-132.png 381w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-132-300x259.png 300w\" sizes=\"(max-width: 381px) 100vw, 381px\" \/><\/figure><\/div>\n\n\n<p>Despu\u00e9s de aceptar los cambios tendremos listo nuestro ComboBox:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"459\" height=\"293\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-133.png\" alt=\"\" class=\"wp-image-16547\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-133.png 459w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-133-300x192.png 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/figure><\/div>\n\n\n<h2><strong>CARGAR DATOS AL COMBOBOX EN UN FORMULARIO VBA<\/strong><\/h2>\n\n\n\n<p>En el caso donde el control est\u00e1 dentro de un formulario VBA, es necesario indicar por c\u00f3digo los elementos que ser\u00e1n agregados al ComboBox de la siguiente manera:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"564\" height=\"234\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-134.png\" alt=\"\" class=\"wp-image-16548\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-134.png 564w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-134-300x124.png 300w\" sizes=\"(max-width: 564px) 100vw, 564px\" \/><\/figure><\/div>\n\n\n<p>Con este c\u00f3digo recorremos todas las celdas del rango A1:A7 y por cada celda agregamos un nuevo elemento al ComboBox. Observa que el c\u00f3digo est\u00e1 dentro del evento&nbsp;<em>UserForm_Initialize<\/em>&nbsp;lo que ocasionar\u00e1 que la carga de datos se haga en el momento en que se inicialice el formulario.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"552\" height=\"339\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-135.png\" alt=\"\" class=\"wp-image-16549\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-135.png 552w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-135-300x184.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-135-356x220.png 356w\" sizes=\"(max-width: 552px) 100vw, 552px\" \/><\/figure><\/div>\n\n\n<p>Si la lista de elementos de la columna A fuera fija, con cualquiera de los ejemplos anteriores ser\u00e1 suficiente para&nbsp;<strong>cargar datos al ComboBox<\/strong>, pero si dicha lista crece continuamente y necesitas que los nuevos elementos sean considerados dentro del ComboBox, entonces debemos cambiar un poco el enfoque de la soluci\u00f3n para considerar el uso de un nombre de rango din\u00e1mico.<\/p>\n\n\n\n<h2><strong>RANGO DIN\u00c1MICO PARA CARGAR DATOS AL COMBOBOX<\/strong><\/h2>\n\n\n\n<p>Para crear un rango din\u00e1mico es necesario utilizar la&nbsp;funci\u00f3n DESREF&nbsp;y la&nbsp;funci\u00f3n CONTARA&nbsp;la cual nos ayudar\u00e1 a conocer las celdas con valores dentro de la columna que contiene los datos. Para crear el nombre debemos ir a la ficha F\u00f3rmulas &gt; Nombres definidos &gt; Asignar nombre.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"406\" height=\"236\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-136.png\" alt=\"\" class=\"wp-image-16550\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-136.png 406w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-136-300x174.png 300w\" sizes=\"(max-width: 406px) 100vw, 406px\" \/><\/figure><\/div>\n\n\n<p>Creamos el nombre&nbsp;<em>MiLista<\/em>&nbsp;que nos servir\u00e1 para hacer referencia a este rango din\u00e1mico de celdas. En el \u00faltimo cuadro de texto, donde generalmente colocamos una referencia a un rango de celdas, colocaremos la siguiente f\u00f3rmula:<\/p>\n\n\n\n<p><code>=DESREF(Ejemplo2!$A$1,0,0,CONTARA(Ejemplo2!$A:$A))<\/code><\/p>\n\n\n\n<p>Esta f\u00f3rmula devolver\u00e1 una referencia a un rango que inicia en la celda A1 (de la hoja Ejemplo2) y termina N filas por debajo. La cantidad de filas a desplazarse hacia abajo ser\u00e1 el resultado de la funci\u00f3n CONTARA que cuenta las celdas no vac\u00edas de la columna A.<\/p>\n\n\n\n<p>De esta manera queda creado nuestro nombre de rango din\u00e1mico que utilizaremos para&nbsp;<strong>cargar datos al ComboBox<\/strong>. Si quieres saber un poco m\u00e1s sobre la creaci\u00f3n de este tipo de nombres te recomiendo leer el art\u00edculo&nbsp;Nombres de rango din\u00e1micos. En las siguientes secciones haremos uso de este rango din\u00e1mico reci\u00e9n creado.<\/p>\n\n\n\n<h2><strong>COMBOBOX EN HOJA DE EXCEL CON RANGO DIN\u00c1MICO<\/strong><\/h2>\n\n\n\n<p>Si nuestro ComboBox se encuentra en la hoja de Excel, podemos hacer referencia al rango din\u00e1mico abriendo la ventana de propiedades y para la propiedad&nbsp;<em>ListFillRange<\/em>&nbsp;colocar el nombre del rango din\u00e1mico:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"335\" height=\"306\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-137.png\" alt=\"\" class=\"wp-image-16551\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-137.png 335w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-137-300x274.png 300w\" sizes=\"(max-width: 335px) 100vw, 335px\" \/><\/figure><\/div>\n\n\n<p>Sin embargo, con esta adecuaci\u00f3n no es suficiente para que la actualizaci\u00f3n del ComboBox sea autom\u00e1tica. Si dejamos las cosas as\u00ed, los datos se refrescar\u00e1n solamente hasta que cerremos y volvamos a abrir el libro, as\u00ed que lo mejor ser\u00e1 agregar c\u00f3digo adicional a nuestra hoja para asegurarnos de que la actualizaci\u00f3n se hace en cuanto modificamos los elementos de la columna A.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"663\" height=\"197\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-138.png\" alt=\"\" class=\"wp-image-16552\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-138.png 663w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-138-300x89.png 300w\" sizes=\"(max-width: 663px) 100vw, 663px\" \/><\/figure><\/div>\n\n\n<p>Con este c\u00f3digo nos aseguramos de que, al momento de agregar o eliminar un elemento de la columna A, el ComboBox refrescar\u00e1 autom\u00e1ticamente sus elementos.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"439\" height=\"312\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-139.png\" alt=\"\" class=\"wp-image-16553\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-139.png 439w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-139-300x213.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-139-100x70.png 100w\" sizes=\"(max-width: 439px) 100vw, 439px\" \/><\/figure><\/div>\n\n\n<h2><strong>COMBOBOX EN FORMULARIO VBA CON RANGO DIN\u00c1MICO<\/strong><\/h2>\n\n\n\n<p>Para hacer que un ComboBox que est\u00e1 ubicado dentro de un formulario cargue sus datos desde el rango din\u00e1mico, debemos utilizar el siguiente c\u00f3digo:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"403\" height=\"242\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-140.png\" alt=\"\" class=\"wp-image-16554\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-140.png 403w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-140-300x180.png 300w\" sizes=\"(max-width: 403px) 100vw, 403px\" \/><\/figure><\/div>\n\n\n<p>La \u00fanica diferencia con el primer formulario es que el rango indicado es precisamente el nombre del rango din\u00e1mico. Al momento de abrir el formulario se cargar\u00e1 el ComboBox con todos los elementos de la columna A.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"463\" height=\"347\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-141.png\" alt=\"\" class=\"wp-image-16555\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-141.png 463w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-141-300x225.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-141-80x60.png 80w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-141-265x198.png 265w\" sizes=\"(max-width: 463px) 100vw, 463px\" \/><\/figure><\/div>\n\n\n<p>En este caso no es necesario agregar c\u00f3digo adicional ya que cada vez que abramos el formulario se actualizar\u00e1n los elementos del ComboBox.<\/p>\n\n\n\n<p><strong>Art\u00edculo que te recomendamos leer:<\/strong><br><strong><a href=\"https:\/\/www.perucontable.com\/excelcontable\/como-agregar-una-macro-a-la-barra-de-herramientas-de-acceso-rapido-en-excel\/\" data-type=\"URL\" data-id=\"https:\/\/www.perucontable.com\/excelcontable\/como-agregar-una-macro-a-la-barra-de-herramientas-de-acceso-rapido-en-excel\/\">\u00bfC\u00d3MO AGREGAR UNA MACRO A LA BARRA DE HERRAMIENTAS DE ACCESO R\u00c1PIDO EN EXCEL?<\/a><\/strong><\/p>\n\n\n\n<p><strong>\u00bfQu\u00e9 te pareci\u00f3 nuestra blog? Com\u00e9ntanos.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El&nbsp;Cuadro combinado, tambi\u00e9n conocido como ComboBox, es un control ActiveX que nos permite crear una lista desplegable de la cual podremos seleccionar alguno de sus elementos. Pero antes de poder utilizar este control, es necesario saber&nbsp;c\u00f3mo cargar datos a un ComboBox&nbsp;a partir de una lista de valores en una hoja de Excel. Para este ejemplo [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":16574,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[108,2,67,25],"tags":[],"yst_prominent_words":[302,275,158,320],"_links":{"self":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16538"}],"collection":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/comments?post=16538"}],"version-history":[{"count":5,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16538\/revisions"}],"predecessor-version":[{"id":16810,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16538\/revisions\/16810"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media\/16574"}],"wp:attachment":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media?parent=16538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/categories?post=16538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/tags?post=16538"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/yst_prominent_words?post=16538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}