Nombre de Columnas de ListBox

18/12/2005 - 00:08 por diegoar | Informe spam
Hola, quisiera saber si existe alguna forma de agregar un titulo a las
columnas de un listbox usando codigo vba. No puedo utilizar columnhead
y rowsourse ya que se me complica mucho el manejo con una hoja auxiliar
para lo que estoy haciendo.

Espero Respuesta

Gracias, Diego

Preguntas similare

Leer las respuestas

#1 KL
18/12/2005 - 00:41 | Informe spam
Hola Diego,

Hola, quisiera saber si existe alguna forma de agregar un titulo a las
columnas de un listbox usando codigo vba. No puedo utilizar columnhead
y rowsourse ya que se me complica mucho el manejo con una hoja auxiliar
para lo que estoy haciendo.



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 Héctor Miguel
18/12/2005 - 02:07 | Informe spam
hola, diego !

... alguna forma de agregar un titulo a las columnas de un listbox usando codigo vba.
No puedo utilizar columnhead y rowsourse ya que se me complica mucho el manejo con una hoja auxiliar ...



considerando que la propiedad columnheads de un listbox solo se llena cuando 'toma' sus elementos de un rango...
[parece que] solo queda usar controles de etiquetas [label] y 'simular' la apariencia de las columnas [tal como menciona KL]

[por otro lado]... si comentas cual es/son la/s complicacion/es para el manejo de esa hoja 'auxiliar'...
es posible que se puedan encontrar alternativas [te paso un ejemplo al final] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=-> si estas 'llenando' los elementos de un listbox por ciclos 'For...Next'... p.e.
en el modulo de codigo del formulario ==Private Sub UserForm_Initialize()
Dim Fila As Byte, Col As Byte
With ListBox1: .Clear
For Fila = 0 To 8: .AddItem
For Col = 0 To .ColumnCount - 1
.List(Fila, Col) = "F-" & Fila + 1 & " C-" & Col + 1
Next
Next
End With
End Sub

-> [probablemente] te tomaria +/- el mismo tiempo 'pasar' los datos a una hoja [p.e. 'oculta']
asignar un nombre al rango resultante y usarlo en la propiedad 'rowsource' del listbox
tomando en cuenta que los 'columnheads' son la fila inmediata superior al rango asignado [p.e.]
en el mismo modulo y evento ==Private Sub UserForm_Initialize()
Dim Fila As Byte, Col As Byte
With Worksheets("Hoja oculta"): .Cells.Clear
.Range("a1:d1") = Array("Titulo1", "Titulo2", "Titulo3", "Titulo4")
For Fila = 2 To 10
For Col = 1 To ListBox1.ColumnCount
.Cells(Fila, Col) = "F-" & Fila - 1 & " C-" & Col
Next
Next
Names.Add Name:="Listado", RefersTo:= _
Range(.Range("a2"), .Range("a2").End(xlToRight).End(xlDown))
ListBox1.RowSource = "Listado"
End With
End Sub
Respuesta Responder a este mensaje
#3 Fabian
19/12/2005 - 09:17 | Informe spam
Hola Hector, me tome el atrevimiento de retocar tu codigo, tanto me
enseñaste de listbox, que no puedo resistirme cuando los veo. Saludos.

' en el modulo de codigo del formulario =='Crear un UserForm y dentro un ListBox
Private Sub Test()
Dim Fila As Byte, Col As Byte
With Hoja1
.Cells.Clear
.[a1:d1] = Array("Titulo1", "Titulo2", "Titulo3", "Titulo4")
UserForm1.ListBox1.ColumnCount = 4
For Fila = 2 To 10
For Col = 1 To UserForm1.ListBox1.ColumnCount
.Cells(Fila, Col) = "F-" & Fila - 1 & " C-" & Col
Next
Next
Names.Add Name:="Listado", RefersTo:= _
Range(.[a2], .[a2].End(xlToRight).End(xlDown))
With UserForm1.ListBox1
.ColumnHeads = True
.ColumnWidths = "35;35;35;35"
.RowSource = "Listado"
End With
UserForm1.Show
End With
End Sub
Respuesta Responder a este mensaje
#4 Héctor Miguel
20/12/2005 - 05:46 | Informe spam
hola, Fabian !

... me tome el atrevimiento de retocar tu codigo
tanto me ense#aste de listbox, que no puedo resistirme cuando los veo...



-> me 'sono raro'... eso del 'atrevimiento' :))
las propuestas son -precisamente y/o a falta de detalles mas 'precisos'-...
para adaptarlas a las necesidades 'particulares' ;)

-> aunque puedo [tomarme 'el atrevimiento' de] 'compartir' un poco del 'haberte ense#ado'
quiza porque me haya tocado [en turno] el 'ponerte en el camino'...
da gusto saber que da frutos y 'del otro lado' se abre el gusto por la experimentacion ;)

saludos [y gracias por el 'feed-back'],
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida