Mantener títulos en un Listbox cambiando sus valores
Quería comentar un problema que me aparece en un Listbox para ver si me podían echar una mano. El Listbox estará acompañado de 1 TextBox y de 2 botones más en un formulario.
En el formulario lo que pretendo es que apretando a uno de los botones se cargue en el Listbox una tabla de una hoja y que con ella se ponga el titulo que aparece (mediante ColumnHeads) en el Listbox. A continuación, asignando una palabra en el TextBox y apretando después al otro botón, se seleccionen las filas donde se repite esa palabra y las muestre por el Listbox. Pero es aquí donde no se como conseguir que se muestren los títulos en el mismo Listbox. Hasta ahora solo había conseguido que aparecieran introduciendo en la posición primera del Listbox pero no como encuadrarlas mediante la propiedad ColumnHeads.
La subrutina que tengo hasta ahora es la siguiente:
Private Sub CommandButton1_Click()
Dim rngRango As Range
Set rngRango = Worksheets("Hoja1").Range("B4:E14")
Me.ListBox1.ColumnHeads = True
Me.ListBox1.ColumnCount = rngRango.Columns.Count
Me.ListBox1.RowSource = rngRango.Address(external:=True)
Set rngRango = Nothing
End Sub
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
valor = TextBox1
Sheets("Hoja1").Unprotect
Sheets("Hoja1").Activate
Cells.EntireRow.Hidden = False
uf = Range("B" & Cells.Rows.Count).End(xlUp).Row
If valor = "" Then Exit Sub
ListBox1.RowSource = "": ListBox1.ColumnCount = 4
Dim Datos(11, 3)
For fil = 0 To uf
For j = 0 To 3
If Range("B" & fil + 4) <> valor Then
Rows(fil + 4 & ":" & fil + 4).EntireRow.Hidden = True
Else
Datos(fil, j) = Cells(fil + 3, j + 2)
End If
Next j
Next fil
ListBox1.List() = Datos
For i = ListBox1.ListCount - 1 To 0 Step -1
On Error Resume Next
If ListBox1.List(i) <> TextBox1 Then
ListBox1.RemoveItem (i)
End If
Next i
Sheets("Hoja1"). Protect
Sheets("Hoja2"). Activate
End Sub