Colocar titulo a listbox de 3 columnas

Saludos experto tengo el código descrito mas abajo para cuando entren a al textbox1 se despliegue el listbox1 y asignarle 3 columnas y títulos, pero no logro que los titutos se llenen.
PD: Los Datos los ala de una hoja que se llama "Usuarios" y el la primera linea de la hoja están los títulos que debería poner que son "Usuario", "Cedula" y "Nombre"


Private Sub TextBox1_Enter()
ListBox1.Visible = True
ListBox1.ColumnCount = 3 'numero de columnas
ListBox1.ColumnWidths = "60;70;19" 'asignando ancho de columnas
ListBox1.ColumnHeads = True
Dim t As Long
Dim i As Long
t = Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("A:A"))
ListBox1.Clear
For i = 1 To t
ListBox1.AddItem Sheets("Usuarios").Range("A" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Usuarios").Range("C" & i)
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Usuarios").Range("B" & i)
Next
End Sub
Gracias de antemano

1

1 respuesta

1
Respuesta de

Hola:

Los títulos los pone, solamente en el caso que cargues el listbox con la instrucción rowsource, por ej.

Private Sub UserForm_activate()
ListBox1.ColumnCount = 3 'numero de columnas
ListBox1.ColumnWidths = "60;70;19" 'asignando ancho de columnas
ListBox1.ColumnHeads = True
ListBox1.RowSource = "A1:C" & Range("A" & Rows.Count).End(xlUp).Row
End Sub

tip: Para limpiar el listbox, cuando lo cargas con rowsource, utiliza

ListBox1.RowSource = ""

saludos.dam

y como se podría modificar este código según la instrucción rowsource para según voy escribiendo las palabras se agreguen al listbox las que tengan coincidencia, ya que este código lo hace bien pero no me pone el titulo a las columnas

Private Sub TextBox1_Change()
ListBox1.ColumnCount = 3 'numero de columnas
ListBox1.ColumnWidths = "60;70;19" 'asignando ancho de columnas
ListBox1.ColumnHeads = True
If OptionButton2.Value = True Then 'buscar por usuario
Dim t As Long
Dim i As Long
t = Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("A:A"))
ListBox1.Clear
For i = 1 To t
If InStr(1, Sheets("Usuarios").Range("A" & i), Trim(TextBox1)) > 0 Then
ListBox1.AddItem Sheets("Usuarios").Range("A" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Usuarios").Range("C" & i)
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Usuarios").Range("B" & i)
End If
Next
Else
If OptionButton1.Value = True Then 'buscar por nombre
t = Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("B:B"))
ListBox1.Clear
For i = 1 To t
If InStr(1, UCase(Sheets("Usuarios").Range("B" & i)), UCase(Trim(TextBox1))) > 0 Then
ListBox1.AddItem Sheets("Usuarios").Range("A" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Usuarios").Range("C" & i)
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Usuarios").Range("B" & i)
End If
Next
Else
If OptionButton3.Value = True Then 'buscar por cedula
t = Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("C:C"))
ListBox1.Clear
For i = 1 To t
If InStr(1, Sheets("Usuarios").Range("C" & i), Trim(TextBox1)) > 0 Then
ListBox1.AddItem Sheets("Usuarios").Range("A" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Usuarios").Range("C" & i)
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Usuarios").Range("B" & i)
End If
Next
End If
End If
End If
End Sub

tienes que poner el titulo a cada columna

y como le pongo el titulo a cada columna, ya que esta es la pregunta original. y disculpe mi insistencia

Tienes que quitar esta instrucción

ListBox1.ColumnHeads = True

Solamente se utiliza si cargas con rowsource

Ahora tendrías que cargar un registro, pero en lugar de poner datos, vas a poner tus títulos, ej:

If OptionButton2.Value = True Then 'buscar por usuario
Dim t As Long
Dim i As Long
t = Application.WorksheetFunction.CountA(Sheets("Usuarios").Range("A:A"))
ListBox1.Clear
For i = 1 To t
If InStr(1, Sheets("Usuarios").Range("A" & i), Trim(TextBox1)) > 0 Then

if i = 1 then

ListBox1.AddItem "TITULO1"

ListBox1.List(ListBox1.ListCount - 1, 1) = "TITULO2"

ListBox1.List(ListBox1.ListCount - 1, 2) = "TITULO3"

End If


ListBox1.AddItem Sheets("Usuarios").Range("A" & i)
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Usuarios").Range("C" & i)
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Usuarios").Range("B" & i)
End If
Next
Else

Prueba y me comentas

saludos.dam

Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: