Como se agrega un item a una columna de ListBox?

29/08/2005 - 08:30 por Fabian | Informe spam
Sub Text()
ListBox1.Visible = False
ListBox1.Clear
Application.ScreenUpdating = True
ListBox1.ColumnCount = 3
ListBox1.ColumnHeads = True ' Como agrego titulos?
ListBox1.ColumnWidths = 100
ListBox1.AddItem ("Articulo1"), Column(1) 'Asi no!
ListBox1.Column(2).AddItem ("Articulo2") 'Asi no!
ListBox1.Visible = True
End Sub
 

Leer las respuestas

#1 KL
29/08/2005 - 11:51 | Informe spam
Hola Fabian,

ListBox1.ColumnHeads = True ' Como agrego titulos?



Hasta donde se, el uso de la propiedad ColumnHeads solo es posible cuando el
control coge los valores de un rango vinculado (p.ej.: ListBox1.RowSource =
"A1:C10"), y no es posible en controles donde los Items se anaden uno a uno
:-(

ListBox1.ColumnWidths = 100



Asi solo estableces el ancho para la primera columna. Si lo que quieres es
el mismo ancho para todas, entonces:
ListBox1.ColumnWidths = "100,100,100"

ListBox1.AddItem ("Articulo1"), Column(1) 'Asi no!
ListBox1.Column(2).AddItem ("Articulo2") 'Asi no!



En primer lugar, el metodo AddItem solo anade registros a controles con
listas UNIDIMENSIONALES (una columna). La sintaxis es:
Variant = object.AddItem [ item [, varIndex]]
Si quieres anadir registros a listas BIDIMENSINALES (varias columnas)
tendras que usar las propiedades List o Column (revisa la Ayuda de Excel
desde el Editor VBA).

Siguiendo la logica de tu macro podrias usar algo asi, pero la primera fila
no estara inmovilizada y se podra seleccionar como cualquier otra fila con
datos:

Dim MiMatriz(2, 2) As Variant
With ListBox1
.Visible = False
.Clear
Application.ScreenUpdating = True
.ColumnCount = 3
.ColumnWidths = "100,100,100"

MiMatriz(0, 0) = "Articulo1"
MiMatriz(1, 0) = "1"
MiMatriz(2, 0) = "2"

MiMatriz(0, 1) = "Articulo2"
MiMatriz(1, 1) = "11"
MiMatriz(2, 1) = "22"

MiMatriz(0, 2) = "Articulo3"
MiMatriz(1, 2) = "111"
MiMatriz(2, 2) = "222"

.List = MiMatriz
.Visible = True
End With

En situaciones similares, yo me he decantado por crear unas etiquetas
(Label) por encima de la ListBox. Podrias mostrarlas, ocultar, cambiar el
ancho, etc por codigo al igual que los demas controles.

Saludos,
KL

Preguntas similares