En la descripción del vídeo tienes el vínculo para descargar el ejercicio. Vínculo a un ejercicio modificado según consulta de los comentarios: bit.ly/GerardoExcel-ListBoxDinamico-v2
Gerardo, la verdad es que, como dicen en mi país, "eres un verdugo". Me encantan este tipo de códigos que generan cosas dentro de la aplicación. Si pudiera, te daría 10 "me gusta", pero al menos te doy el que me permiten. Mil gracias.
no tuve necesidad del factor 0.8, lo elimine. y me callo como "anillo al dedo" la colocacion de los encabezados, con sus respectivas columnas, luego le agregue dos columnas mas y el comporatamiento fue perfecto tambien. Saludos.
Hola Gerardo, me encantó el contenido. Para aportar , te comento que al ejecutar la macro tuve un comportamiento que no esperaba, las columnas que tenían anchos con decimales al momento de poblar el listBox eliminaban el punto decimal y convertían por ejemplo ( 22.7 a 227); es decir, propiedad .ColumnWidths del listBox en su cadena quitaba los puntos decimales y de ahí el comportamiento. Me imagino que esto se debe a las configuraciones regionales y como Excel no logra ajustarse. Yo soy de México. Para corregir el problema habría que hacer los siguientes cambios: En la Subrutina UserForm_Initialize sustituir. En las declaraciones: 'Dim ppc, totalLB As Double Dim ppc, totalLB As Long * sustituyo el tipo de variable de Doble a Long para no manejar decimales. Dentro del ciclo FOR para construir la cadena strCW 'ppc = loMiTabla.ListColumns(c).Range.Width * 0.8) ppc = Int(loMiTabla.ListColumns(c).Range.Width * 0.8) + 1 * Uso la función Int para truncar y el + 1 para controlar la diferencia de los decimales. En la subrutina crearTitulosColumnas. En el segundo ciclo FOR: For i = LBound(arrLabels) To UBound(arrLabels) If i = 1 Then With arrLabels(i) .Height = 12 '.Width = loMiTabla.ListColumns(i).Range.Width * 0.8 *COMENTADO para efecto de ver cambio .Width = Int(loMiTabla.ListColumns(i).Range.Width * 0.8) + 1 '.Left = Me.ListBox1.Left + 7 *COMENTADO para efecto de ver cambio .Left = Me.ListBox1.Left + 10 'Ajuste en la posición de la primer etiqueta .Top = Me.ListBox1.Top - .Height .Caption = loMiTabla.HeaderRowRange(i) End With Else With arrLabels(i) .Height = 12 '.Width = loMiTabla.ListColumns(i).Range.Width * 0.8 *COMENTADO para efecto de ver cambio .Width = Int(loMiTabla.ListColumns(i).Range.Width * 0.8) + 1 .Left = arrLabels(i - 1).Left + arrLabels(i - 1).Width .Top = Me.ListBox1.Top - .Height .Caption = loMiTabla.HeaderRowRange(i) End With End If Next i Obviamente los comentarios se pueden quitar, sólo los integro para entender el ajuste realizado. Espero les sirva.
Hola Gerardo, a mi me pasa lo mismo en el ancho de columnas, entonces la Solución es poner el ancho de las columnas de la tabla en numero entero ó se resuelve con código vba?@@GerardoExcel
Hola muy buenas , video muy bien explicado e ilustrativo, he añadico una pequeña cosita y es crear las etiquetas en tiempo de ejecución porque cuando añadía una columna nueva me retorna un error y es esto: Dim lblcontrol As MSForms.Label 'Set lblcontrol = Me.Controls.Add("Forms.Label.1", "lblTitulo" & i) Espero sea de utilidad
Muy útil! Si se crea una función a la cual se le pase por parámetros el formulario, construir (diseñar) el formulario resulta mucho más sencillo. Se guardarla toda la estructura de diseño en un módulo que se pueda importar y de ahi en adelante es pan comido...
Hola, buenos días... Para empezar, mi agradecimiento por tu aporte técnico. EXCELENTE. Tengo una situación: ésta MACRO, funciona SÓLO en el archivo que contiene la MACRO. Sí se ejecuta para otro archivo, no funcionan los encabezados. ¿Tendrá alguna sugerencia para ésta situación? Reciba mi agradecimiento y felicitación desde México
Gracias por comentar Jorge!! Si no lo ha realizado, es posible que precises realizar algunos pequeños ajustes: Por ejemplo, ¿el control ListBox se llama igual? (ListBox1) En la parte inicial del evento Initialize del formulario existen las siguientes asignaciones a las variables objeto: Set ws = Worksheets("Ejercicio") Set loMiTabla = ws.ListObjects("Tabla1") ¿Ha actualizado los nombres de la hoja (de "Ejercicio" para el nombre de tu hoja) y de la tabla (de "Tabla1" para el nombre de tu tabla)? He realizado una prueba en otro libro de Excel copiando el código y realizando los ajustes que menciono y funciona todo bien. Saludos!!
Exelente información, saludos desde Panamá, Consulta, de que manera se puede hacer para seleccionar solo las columnas que se desean mostrar. Saludos S.S.
Gracias por visitar y comentar!! En la descripción del vídeo hay un vínculo: El texto dice así: Descarga para el mismo ejercicio pero solo carga algunas columnas... Espero que esa versión y ejercicio te pueda inspirar... Saludos!!
Buenas noches Gerardo. Saludos desde Perú. He adaptado tu código, en mi proyecto en Excel. Tengo una consulta: Mi Control de inventarios tiene una Hoja con la Base de Datos de Productos, otra donde registro las Entradas y en otra las Salidas de los productos. En estas últimas, he implementado un Formulario de Búsqueda con tu ListBox Dinámico. Todo perfecto, hasta el paso de etiquetar las columnas en el ListBox de Salidas. Formo la cadena de la propiedad ColumnWidths (strCW) del ListBox para 5 columnas, del total de 7 de la Base de datos: para el ListBox de Ingresos como para el de Salidas, se muestran las columnas 1, 3, 4 y 5, para el de Ingresos la 6 (Cto. Unit.) y para el de Salidas la 7 (Precio Vta.). La data carga, según lo esperado, en ambos ListBox. Con tu código he podido crear y posicionar las etiquetas para las columnas del ListBox de Ingresos (OK), pero no puedo hacerlo para el de salida. --------------------------------------------------------------------------------------------- Private Sub CrearTitulosColumnas() ' Variables para la iteración del array (c) para asignar valores a las propiedades de los controles Dim c As Byte Dim i As Byte ' Crear una variable array dinámica y redimencionarla Dim arrEtiqueta() As MSForms.Control ReDim arrEtiqueta(1 To numColLB)
' Asignar a la variable array cada uno de los controles de etiqueta: 5 (numColLB) For c = 1 To numColLB Set arrEtiqueta(c) = Me.Controls.Add("Forms.Label.1", "lblTit" & c) Next c
' Asignar valores a propiedades de las etiquetas For i = LBound(arrEtiqueta) To UBound(arrEtiqueta) If i = 1 Then With arrEtiqueta(i) .Height = 15 .Width = Int(MisProductos.ListColumns(i).Range.Width) + 1 .Left = Me.lst_ListaProducto.Left .Top = Me.lst_ListaProducto.Top - .Height .Caption = MisProductos.HeaderRowRange(i) End With Else With arrEtiqueta(i) .Height = 15 .Width = Int(MisProductos.ListColumns(i + 1).Range.Width) + 1 .Left = arrEtiqueta(i - 1).Left + arrEtiqueta(i - 1).Width .Top = Me.lst_ListaProducto.Top - .Height .Caption = MisProductos.HeaderRowRange(i + 1) End With End If Next i End Sub --------------------------------------------------------------------------------------------- En la última iteración (i=5) no logro que la etiqueta de la última columna del ListBox, para el caso del formulario de búsqueda de Salidas, sea la cabecera de la columna 7 de la Base de Datos. Te agradecería, me aconsejaras como debo resolver este problema. Gracias.
Gracias por comentar y visitar el canal. Si entendí bien tu consulta pienso que se solucionaría con la siguiente modificación (por favor, compare el código y vea donde están las modificaciones) Saludos!! ' Asignar valores a propiedades de las etiquetas For i = LBound(arrEtiqueta) To UBound(arrEtiqueta) If i = 1 Then With arrEtiqueta(i) .Height = 15 .Width = Int(MisProductos.ListColumns(i).Range.Width) + 1 .Left = Me.lst_ListaProducto.Left .Top = Me.lst_ListaProducto.Top - .Height .Caption = MisProductos.HeaderRowRange(i) End With Else With arrEtiqueta(i) .Height = 15 .Width = Int(MisProductos.ListColumns(i + 1).Range.Width) + 1 .Left = arrEtiqueta(i - 1).Left + arrEtiqueta(i - 1).Width .Top = Me.lst_ListaProducto.Top - .Height If i 5 then .Caption = MisProductos.HeaderRowRange(i + 1) Elseif i = 5 then .Caption = MisProductos.HeaderRowRange(i + 2) ' o MisProductos.HeaderRowRange(7) Porque es la columna 7 de tu tabla se precisa que la iteración 5 corresponda con la columna 7 de tu tabla Salidas End If End With End If Next i
@@GerardoExcel, implementé tu modificación y en primera instancia, en los ListBox de ambas hojas, se muestra el título de la columna 7 (Precio Vta.) de la BD. Analizando, la lógica está bien, cuando el índice es diferente a 5, le suma 1 (i+1), cuando es 5 le suma 2 (i+2), es decir, en ambos se muestra el título de la columna 7 de la BD. Encontré la solución (quemé cerebro). Adicioné una condición a tus líneas de código: If i 5 Then .Caption = MisProductos.HeaderRowRange(i + 1) ElseIf i = 5 Then If MiHojaAct = "Ingresos" Then .Caption = MisProductos.HeaderRowRange(i + 1) If MiHojaAct = "Salidas" Then .Caption = MisProductos.HeaderRowRange(i + 2) End If Muchas gracias por el apoyo y la rapidez de tu respuesta a mi consulta. Acá tenemos un dicho "Una pena entre dos, es menos atroz"... 🙂
Hola Gerardo, como estás, una consulta, hay alguna manera de colocar los títulos de cabecera de la tabla sin la propiedad rowsource? (sin etiquetas) o sea, que no sean seleccionables, para que cuando recorra mas de 10 columnas (16 que tengo) recorra hacia el costado derecho la barra de desplazamiento del listbox y se muevan junto con las cabeceras (lo hice mas chico al ancho del formulario porque era muy grande en tamaño). Esto obedece en razón de poder filtrar el contenido del listbox. Gracias Gerardo. Saludos
Hola José. Me parece que te respondí en otro comentario. Bueno... solo decirte que acabo de grabar un vídeo con una solución a lo que me planteas... el vídeo se publicará en septiembre. Gracias y saludos!!
Si. Puedes cargar el ListBox con un ciclo For To Next y con algunos ajustes en el código se puede hacer... Bueno ya lo he probado y he realizado el ejercicio y me funciona bien. También incluye modificaciones aportadas por Daniel Galan. En la descripción y en el primer comentario dejo el vínculo. Gracias y saludos!!
Hola. A mi no me toma el ancho de las columnas de la tabla en el listbox. Me aparecen super separadas las columnas. Ya he revisado el código una y otra vez y no se que hacer.
He actualizado el vínculo. Ahora pienso que funciona todo bien: bit.ly/GerardoExcel-ListBoxDinamico A mi me funciona todo bien, pero parece que debido a algunas configuraciones regionales no siempre funcionaba como a mí. Puedes ver el comentario de Daniel Galan. Saludos!!
En la descripción del vídeo tienes el vínculo para descargar el ejercicio.
Vínculo a un ejercicio modificado según consulta de los comentarios: bit.ly/GerardoExcel-ListBoxDinamico-v2
Excelente la modificación, gracias por compartir.
Gerardo, la verdad es que, como dicen en mi país, "eres un verdugo". Me encantan este tipo de códigos que generan cosas dentro de la aplicación. Si pudiera, te daría 10 "me gusta", pero al menos te doy el que me permiten. Mil gracias.
Muchas gracias Miguel!!
Hola Gerardo, muchísimas gracias, esperaré ansioso el video. Saludos
Excelente, siempre en bueno seguir sus videos, aportan mucho conocimiento. GRACIAS
Muchas gracias!!
Ok, muchas gracias Gerardo. Saludos
Gracias!!
Gerardo, excelente contenido. Gracias. Continuos éxitos para tu canal.
Gracias Lalo!
Excelente e Interesante manera de DINAMISAR EL LISTBOX, Gracias Gerardo, Saludos desde Managua.
Gracias a ti!!
Muy buena formación. Un capitulo interesantísimo. Muchas gracias Gerardo
Muchas gracias!
no tuve necesidad del factor 0.8, lo elimine. y me callo como "anillo al dedo" la colocacion de los encabezados, con sus respectivas columnas, luego le agregue dos columnas mas y el comporatamiento fue perfecto tambien. Saludos.
Ok muy bien!
Hola Gerardo, me encantó el contenido. Para aportar , te comento que al ejecutar la macro tuve un comportamiento que no esperaba, las columnas que tenían anchos con decimales al momento de poblar el listBox eliminaban el punto decimal y convertían por ejemplo ( 22.7 a 227); es decir, propiedad .ColumnWidths del listBox en su cadena quitaba los puntos decimales y de ahí el comportamiento.
Me imagino que esto se debe a las configuraciones regionales y como Excel no logra ajustarse. Yo soy de México.
Para corregir el problema habría que hacer los siguientes cambios:
En la Subrutina UserForm_Initialize sustituir.
En las declaraciones:
'Dim ppc, totalLB As Double
Dim ppc, totalLB As Long
* sustituyo el tipo de variable de Doble a Long para no manejar decimales.
Dentro del ciclo FOR para construir la cadena strCW
'ppc = loMiTabla.ListColumns(c).Range.Width * 0.8)
ppc = Int(loMiTabla.ListColumns(c).Range.Width * 0.8) + 1
* Uso la función Int para truncar y el + 1 para controlar la diferencia de los decimales.
En la subrutina crearTitulosColumnas.
En el segundo ciclo FOR:
For i = LBound(arrLabels) To UBound(arrLabels)
If i = 1 Then
With arrLabels(i)
.Height = 12
'.Width = loMiTabla.ListColumns(i).Range.Width * 0.8 *COMENTADO para efecto de ver cambio
.Width = Int(loMiTabla.ListColumns(i).Range.Width * 0.8) + 1
'.Left = Me.ListBox1.Left + 7 *COMENTADO para efecto de ver cambio
.Left = Me.ListBox1.Left + 10 'Ajuste en la posición de la primer etiqueta
.Top = Me.ListBox1.Top - .Height
.Caption = loMiTabla.HeaderRowRange(i)
End With
Else
With arrLabels(i)
.Height = 12
'.Width = loMiTabla.ListColumns(i).Range.Width * 0.8 *COMENTADO para efecto de ver cambio
.Width = Int(loMiTabla.ListColumns(i).Range.Width * 0.8) + 1
.Left = arrLabels(i - 1).Left + arrLabels(i - 1).Width
.Top = Me.ListBox1.Top - .Height
.Caption = loMiTabla.HeaderRowRange(i)
End With
End If
Next i
Obviamente los comentarios se pueden quitar, sólo los integro para entender el ajuste realizado. Espero les sirva.
Doble gracias Daniel!! Por el comentario y por el aporte. Es bueno saber este tipo de "inconvenientes". Saludos!!
Hola Gerardo, a mi me pasa lo mismo en el ancho de columnas, entonces la Solución es poner el ancho de las columnas de la tabla en numero entero ó se resuelve con código vba?@@GerardoExcel
@@jhoncharles4121 Hola Jhon. El archivo de descarga ya lo modifiqué y ahora estaba funcionando correctamente que yo sepa.
Genial 👏👏👏👏 Muchísimas gracias!!!
Gracias... muy amable Jordi!!
Hola muy buenas , video muy bien explicado e ilustrativo, he añadico una pequeña cosita y es crear las etiquetas en tiempo de ejecución porque cuando añadía una columna nueva me retorna un error y es esto:
Dim lblcontrol As MSForms.Label
'Set lblcontrol = Me.Controls.Add("Forms.Label.1", "lblTitulo" & i)
Espero sea de utilidad
Muchas gracias! Esa variante la tengo creada para un vídeo posterior. De cualquier forma agradecido por contribuir...
Excelente tutorial!! Me resulta extremadamente útil. Gracias!! Va el mg y suscripción crack!
Muchas gracias, muy amable!!
Muy útil! Si se crea una función a la cual se le pase por parámetros el formulario, construir (diseñar) el formulario resulta mucho más sencillo. Se guardarla toda la estructura de diseño en un módulo que se pueda importar y de ahi en adelante es pan comido...
Gracias por comentar!!
Hola, buenos días...
Para empezar, mi agradecimiento por tu aporte técnico. EXCELENTE.
Tengo una situación: ésta MACRO, funciona SÓLO en el archivo que contiene la MACRO.
Sí se ejecuta para otro archivo, no funcionan los encabezados.
¿Tendrá alguna sugerencia para ésta situación?
Reciba mi agradecimiento y felicitación desde México
Gracias por comentar Jorge!!
Si no lo ha realizado, es posible que precises realizar algunos pequeños ajustes:
Por ejemplo, ¿el control ListBox se llama igual? (ListBox1)
En la parte inicial del evento Initialize del formulario existen las siguientes asignaciones a las variables objeto:
Set ws = Worksheets("Ejercicio")
Set loMiTabla = ws.ListObjects("Tabla1")
¿Ha actualizado los nombres de la hoja (de "Ejercicio" para el nombre de tu hoja) y de la tabla (de "Tabla1" para el nombre de tu tabla)?
He realizado una prueba en otro libro de Excel copiando el código y realizando los ajustes que menciono y funciona todo bien.
Saludos!!
Exelente información, saludos desde Panamá, Consulta, de que manera se puede hacer para seleccionar solo las columnas que se desean mostrar.
Saludos S.S.
Gracias por visitar y comentar!! En la descripción del vídeo hay un vínculo: El texto dice así: Descarga para el mismo ejercicio pero solo carga algunas columnas...
Espero que esa versión y ejercicio te pueda inspirar...
Saludos!!
Buenas noches Gerardo. Saludos desde Perú.
He adaptado tu código, en mi proyecto en Excel. Tengo una consulta:
Mi Control de inventarios tiene una Hoja con la Base de Datos de Productos, otra donde registro las Entradas y en otra las Salidas de los productos. En estas últimas, he implementado un Formulario de Búsqueda con tu ListBox Dinámico. Todo perfecto, hasta el paso de etiquetar las columnas en el ListBox de Salidas.
Formo la cadena de la propiedad ColumnWidths (strCW) del ListBox para 5 columnas, del total de 7 de la Base de datos: para el ListBox de Ingresos como para el de Salidas, se muestran las columnas 1, 3, 4 y 5, para el de Ingresos la 6 (Cto. Unit.) y para el de Salidas la 7 (Precio Vta.). La data carga, según lo esperado, en ambos ListBox.
Con tu código he podido crear y posicionar las etiquetas para las columnas del ListBox de Ingresos (OK), pero no puedo hacerlo para el de salida.
---------------------------------------------------------------------------------------------
Private Sub CrearTitulosColumnas()
' Variables para la iteración del array (c) para asignar valores a las propiedades de los controles
Dim c As Byte
Dim i As Byte
' Crear una variable array dinámica y redimencionarla
Dim arrEtiqueta() As MSForms.Control
ReDim arrEtiqueta(1 To numColLB)
' Asignar a la variable array cada uno de los controles de etiqueta: 5 (numColLB)
For c = 1 To numColLB
Set arrEtiqueta(c) = Me.Controls.Add("Forms.Label.1", "lblTit" & c)
Next c
' Asignar valores a propiedades de las etiquetas
For i = LBound(arrEtiqueta) To UBound(arrEtiqueta)
If i = 1 Then
With arrEtiqueta(i)
.Height = 15
.Width = Int(MisProductos.ListColumns(i).Range.Width) + 1
.Left = Me.lst_ListaProducto.Left
.Top = Me.lst_ListaProducto.Top - .Height
.Caption = MisProductos.HeaderRowRange(i)
End With
Else
With arrEtiqueta(i)
.Height = 15
.Width = Int(MisProductos.ListColumns(i + 1).Range.Width) + 1
.Left = arrEtiqueta(i - 1).Left + arrEtiqueta(i - 1).Width
.Top = Me.lst_ListaProducto.Top - .Height
.Caption = MisProductos.HeaderRowRange(i + 1)
End With
End If
Next i
End Sub
---------------------------------------------------------------------------------------------
En la última iteración (i=5) no logro que la etiqueta de la última columna del ListBox, para el caso del formulario de búsqueda de Salidas, sea la cabecera de la columna 7 de la Base de Datos.
Te agradecería, me aconsejaras como debo resolver este problema.
Gracias.
Gracias por comentar y visitar el canal. Si entendí bien tu consulta pienso que se solucionaría con la siguiente modificación (por favor, compare el código y vea donde están las modificaciones)
Saludos!!
' Asignar valores a propiedades de las etiquetas
For i = LBound(arrEtiqueta) To UBound(arrEtiqueta)
If i = 1 Then
With arrEtiqueta(i)
.Height = 15
.Width = Int(MisProductos.ListColumns(i).Range.Width) + 1
.Left = Me.lst_ListaProducto.Left
.Top = Me.lst_ListaProducto.Top - .Height
.Caption = MisProductos.HeaderRowRange(i)
End With
Else
With arrEtiqueta(i)
.Height = 15
.Width = Int(MisProductos.ListColumns(i + 1).Range.Width) + 1
.Left = arrEtiqueta(i - 1).Left + arrEtiqueta(i - 1).Width
.Top = Me.lst_ListaProducto.Top - .Height
If i 5 then
.Caption = MisProductos.HeaderRowRange(i + 1)
Elseif i = 5 then
.Caption = MisProductos.HeaderRowRange(i + 2) ' o MisProductos.HeaderRowRange(7) Porque es la columna 7 de tu tabla se precisa que la iteración 5 corresponda con la columna 7 de tu tabla Salidas
End If
End With
End If
Next i
@@GerardoExcel, implementé tu modificación y en primera instancia, en los ListBox de ambas hojas, se muestra el título de la columna 7 (Precio Vta.) de la BD. Analizando, la lógica está bien, cuando el índice es diferente a 5, le suma 1 (i+1), cuando es 5 le suma 2 (i+2), es decir, en ambos se muestra el título de la columna 7 de la BD.
Encontré la solución (quemé cerebro). Adicioné una condición a tus líneas de código:
If i 5 Then
.Caption = MisProductos.HeaderRowRange(i + 1)
ElseIf i = 5 Then
If MiHojaAct = "Ingresos" Then .Caption = MisProductos.HeaderRowRange(i + 1)
If MiHojaAct = "Salidas" Then .Caption = MisProductos.HeaderRowRange(i + 2)
End If
Muchas gracias por el apoyo y la rapidez de tu respuesta a mi consulta.
Acá tenemos un dicho "Una pena entre dos, es menos atroz"... 🙂
Hola Gerardo, como estás, una consulta, hay alguna manera de colocar los títulos de cabecera de la tabla sin la propiedad rowsource? (sin etiquetas) o sea, que no sean seleccionables, para que cuando recorra mas de 10 columnas (16 que tengo) recorra hacia el costado derecho la barra de desplazamiento del listbox y se muevan junto con las cabeceras (lo hice mas chico al ancho del formulario porque era muy grande en tamaño). Esto obedece en razón de poder filtrar el contenido del listbox. Gracias Gerardo. Saludos
Hola José. Me parece que te respondí en otro comentario. Bueno... solo decirte que acabo de grabar un vídeo con una solución a lo que me planteas... el vídeo se publicará en septiembre. Gracias y saludos!!
Exelente tutorial. Una pregunta: Como le inserto un buscador?
Gracias por visitar el canal y comentar!! Respecto a tu pregunta, mira este vídeo: th-cam.com/video/jjB6jZ8iLMQ/w-d-xo.html
@@GerardoExcel eres bueno en esto, me parece que es muy eficiente la forma de cargar los datos. Muchas Gracias. Guillermo Rodriguez
O sea, sería con ciclo for y la propiedad list. Gracias. Saludos
Trataré de crar alguna solución a tu consulta... pero ni se cuando... gracias por seguir el canal y comentar!
Profe hay alguna forma de solo cargue columnas espeficicas y no toda la tabla. Gracias
Si. Puedes cargar el ListBox con un ciclo For To Next y con algunos ajustes en el código se puede hacer...
Bueno ya lo he probado y he realizado el ejercicio y me funciona bien.
También incluye modificaciones aportadas por Daniel Galan.
En la descripción y en el primer comentario dejo el vínculo.
Gracias y saludos!!
Va subirlo. Gracias
Hola Gerardo, tengo el problema de que no me funcionan los encabezados, la macro no envía ningún error simplemente no se cargan los "Labels".
Hola Jhon. Lo he probado varias veces y en tres computadoras diferentes y me funciona bien. No se que puede ser.
Hola. A mi no me toma el ancho de las columnas de la tabla en el listbox. Me aparecen super separadas las columnas. Ya he revisado el código una y otra vez y no se que hacer.
He actualizado el vínculo. Ahora pienso que funciona todo bien: bit.ly/GerardoExcel-ListBoxDinamico
A mi me funciona todo bien, pero parece que debido a algunas configuraciones regionales no siempre funcionaba como a mí. Puedes ver el comentario de Daniel Galan.
Saludos!!