Colocar titulo a listbox de 3 columnas

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

1 respuesta

Respuesta
2

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 tu respuesta

Haz clic para o

Más respuestas relacionadas