Cabeceras en un listbox aparecen los cuadros vacios

¿Me gustaria conocer por que? Al aplicar la referencia de encabezados en un listbox ellos me aparecen vacios este el codigo,

Private Sub UserForm_Initialize()
a = Sheets(Hoja3.Name).Range("A2:K" & Sheets(Hoja3.Name).Range("A" & Rows.Count).End(3).Row).Value

'a = Worksheets("Hoja2").Range("A2:E2").CurrentRegion
With listcargaproductos
.List = a
'.ColumnCount = Sheets("Hoja2").Range("A2:E" & Sheets("Hoja2").Range("A" & Rows.Count).End(3).Row).Value
.ColumnCount = Worksheets(Hoja3.Name).Range("A2").CurrentRegion.Rows.Count
.ColumnHeads = True ---------->'no me muestrael encabezado!!!
End With

txtfecha = Date

End Sub

2 Respuestas

Respuesta
2

Considera lo siguiente:

- Los encabezados son agregados automáticamente al ListBox cuando utilizas la propiedad RowSource para cargar el listbox. Por ejemplo:

ListBox1. RowSource = "A2:K10"

Nota: Si no especificas la hoja, VBA utiliza la hoja activa.

- La propiedad ColumnHeads debe establecerse como True, tal y como lo haces en tu código:

.ColumnHeads = True

- Los encabezados son tomados de la fila anterior al rango utilizado para el RowSource. Por ejemplo si tu rango es A2 hasta Kn, entonces los encabezados utilizarán el rango de A1 hasta K1.

- Puedes utilizar Address del objeto de un rango para cargar el ListBox. Pero es importante utilizar el parámetro External. Esto asegurará que RowSource leerá desde la hoja del rango en lugar de la hoja activa.

Prueba lo siguiente:

Private Sub UserForm_Initialize()
  Dim rng As Range
  Set rng = Hoja3.Range("A2:K" & Hoja3.Range("A" & Rows.Count).End(3).Row)
  With listcargaproductos
    .ColumnHeads = True
    .ColumnCount = rng.Columns.Count
    .RowSource = rng.Address(External:=True)
  End With
End Sub
Respuesta
1

Probalo de este modo:

Private Sub UserForm_Initialize()
a = Sheets(Hoja3.Name).Range("A2:K" & Sheets(Hoja3.Name).Range("A" & Rows.Count).End(3).Row).Address
With listcargaproductos
.RowSource = "=" & Sheets(Hoja3.Name).Range(a).Address
.ColumnCount = Range(a).Columns.Count
.ColumnHeads = True  '---------->'no me muestrael encabezado!!!
End With
End Sub

No olvides que desde la ventana de propiedades debes dejarlas vacías las que asignas desde el código.

Y de paso quisiera dejarte una imagen por si te sirve como ayuda para reconocer las hojas y sus nombres:

En lo posible utiliza el nombre de la hoja o declarándola con SET si no quieres seleccionarla antes. El orden de las pestañas o el índice pueden cambiar a medida que utilices el libro, ya sea que agregues nuevas hojas, muevas las pestañas de lugar, ocultes alguna hoja o que la renombres.

En video 11 de mi canal (Mejoras en el código) comento estos y otros detalles a tener en cuenta.

Sdos.

Elsa

http://aplicaexcel.com/manuales

¡Gracias! totales e revisado cada uno de sus interesantes  videos y me sumerjo en un mundo claro y bien explicado de nuevo mil y mil gracias  master!!!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas