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...

6 Responses

  1. Gustavo Profe says:

    BUEN APORTE, SERIA EXCELENTE QUE SE LOGRARA REALIZAR TAMBIEN EN UN LISTBOX, DADO QUE EN OCACIONES NO SE LOGRA PONER LOS ENCABEZADOS

    • sergioacamposh says:

      Hola.

      El procedimiento solo cambia en nombre del objeto ListBox.

      Me.ListBox1.List = Application.Transpose(ActiveCell.CurrentRegion.Resize(1).Value)

      • Juan Giraud says:

        Hola Sergio, la verdad he usado mucho tus formularios y le he ido adaptando para mi funcionamiento.
        he creado uno y estoy muy trabado, me gustaria saber si me podes dar una mano, Donde te puedo enviar mi archivo para que le des una miradita.

        Juan

  2. Katherin says:

    quisiera saber como elimino datos repetidos de un combobox (excel 2010 vbasic)

  1. September 4, 2013

    […] Cargar encabezados de tabla en Combobox de Excel con vba […]

  2. December 10, 2013

    […] el artículo llamado Cargar encabezados de tabla en Combobox de Excel con vba manejamos también información de una tabla, pero el propósito era recoger los encabezados. Para […]

Leave a Reply

Your email address will not be published.

%d bloggers like this: