Cargar encabezados de tabla en Combobox de Excel con vba
Un truco siempre útil al momento de trabajar con Excel como base de datos es poder traernos los encabezados de una tabla a una lista, En este caso, para se mostrados en un Combobox.
Si tus macros implican formularios donde manipules bases de datos, será imprescindible que sepas cuáles son los encabezados de tus tablas.
Qué pasa si mis tablas no comienzan en la fila 1
Unos de los primero errores que podemos cometer al momento de traer los encabezados es suponer que estarán en la primera fila de nuestra hoja de cálculo, y además que comenzarán en la primera columna.
Figura 1. Tabla de Excel comenzando en la primera fila y columa de la hoja de cálculo.
Y menciono la palabra “error” no por que lo sea como tal, sino al pensar que nuestras tablas siempre estarán en la misma posición como la figura 1, es dejar pasar el hecho de que no siempre será así.
Así que, en nuestra hoja de cálculo podremos encontrarnos con tablas que comiencen en cualquier fila o columna, por lo que no será recomendable usar un código que después nos saque dolores de cabeza.
Figura 2. Podemos encontrarnos tablas de Excel que no comiencen en la fila 1.
Cómo tomo los encabezados de mi tabla para cargarlos en un Combobox
Bajo la premisa de que nuestra tabla podrá estar en cualquier parte de nuestra hoja de cálculo, usaremos un código que use la región actual de la celda seleccionada, así tomará todas las columnas de la tabla donde estemos situados y de ahí tomará los encabezados.
Figura 3. El Combobox mostrará los datos de la primera fila de la tabla elegida.
Código de la macro
El botón que lanzará el formulario, validará que nuestra región actual tenga más de una columa, para ser considerada una tabla.
Private Sub CommandButton1_Click() If ActiveCell.CurrentRegion.Columns.Count <= 1 Then MsgBox "No hay datos para cargar.", vbExclamation, "EXCELeINFO" Else UserForm1.Show End If End Sub
Al ser lanzado el formulario, el evento Initialize del formulario llenará el Combobox con los datos de la primera fila de la tabla elegida.
Private Sub UserForm_Initialize() Me.ComboBox1.List = Application.Transpose(ActiveCell.CurrentRegion.Resize(1).Value) End Sub
Funciones y métodos de Excel vba usados en el ejemplo
- Resize.
- Transpose.
- CurrentRegion.
- List.
Anexos
Descargar el ejemplo Cargar encabezados de tabla en Combobox.xlsm