H o l a : Lo que hace el siguiente código es copiar las columnas que necesitas del rango "RegistroAutoridades" y pegarlas en la hoja "Temp", para ello deberás crear una hoja llamada "Temp".
Después de pegar las columnas, la macro calcula el número de columnas, el ancho de las columnas y carga la información en el listbox.
Actualizar en esta parte de la macro el nombre de tu hoja con datos, el nombre del rango y las columnas que quieras mostrar.
Set h1 = Sheets("Hoja1") 'Hoja de datos
Set h2 = Sheets("Temp") 'hoja temporal
Set r = h1.Range("RegistroAutoridades") 'nombre de rango de datos
cols = Array("A", "B", "D", "F", "G", "H", "I", "K", "L", "M", _
"N", "O", "P", "Q", "R", "S", "T", "U", "W", "X", _
"Y", "Z", "AD", "AE", "AF", "AG")
El código completo:
Private Sub UserForm_Initialize()
'Por.Dante Amor
Application.ScreenUpdating = False
Set h1 = Sheets("Hoja1") 'Hoja de datos
Set h2 = Sheets("Temp") 'hoja temporal
Set r = h1.Range("RegistroAutoridades") 'nombre de rango de datos
cols = Array("A", "B", "D", "F", "G", "H", "I", "K", "L", "M", _
"N", "O", "P", "Q", "R", "S", "T", "U", "W", "X", _
"Y", "Z", "AD", "AE", "AF", "AG")
'
h2.Cells.ClearContents
fini = r.Cells(1, 1).Row
ffin = r.Rows.Count + fini - 1
numc = UBound(cols) + 1
j = 1
For i = LBound(cols) To UBound(cols)
h1.Range(h1.Cells(fini, cols(i)), h1.Cells(ffin, cols(i))).Copy
h2.Cells(1, j).PasteSpecial xlValues
j = j + 1
Next
h2.Cells.EntireColumn.AutoFit
For i = 1 To numc
cad = cad & Int(h2.Cells(1, i).Width) + 3 & ";"
Next
u = h2.Range("A" & Rows.Count).End(xlUp).Row
c = h2.Cells(fini, h2.Columns.Count).End(xlToLeft).Column
letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & c & ",4),""1"","""")")
'
With ListBox1
.ColumnCount = numc
.ColumnWidths = cad
.ColumnHeads = True
.RowSource = h2.Name & "!A2:" & letra & u
End With
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias