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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Fabian
29/08/2005 - 18:15 | Informe spam
Gracias por los datos, anteriormente revise la ayuda y todas las consultas
que encontre con el buscador del google pero... no entiendo.
No tengo muy claro el tema de las matrices.
Con tu ejemplo mas o menos empiezo a comprender.
ListBox1.ColumnWidths = "100,100,100" lo cambio por "100;100;100" .
De todas formas despues de tratar de adaptar estos ejemplos te consultare
nuevamente porque la idea original es agregar valores con un bucle for next
que debe buscar coincidencias desde una columna y agregar datos de cinco
columnas que corresponden a la misma fila de la coincidencia.
Saludos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida