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.

Tabla de Excel comenzando en primera fila y 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.

Tabla de Excel comenzando en la fila 9

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.

Formulario en Excel que toma los encabezados de una tabla

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

You may also like...