Private Sub ComboBox1_Change()
Dim hoja As Worksheet
Dim fila As Long
Dim ultimaFila As Long
Dim columnas() As Variant
Dim i, ii As Integer
Dim codigo As String
Dim encontrado As Boolean
Set hoja = ThisWorkbook.Sheets("MATRIZ1")
codigo = ComboBox1.Value
' Si ComboBox1 está vacío
If ComboBox1.Value = "" Then
UserForm_Initialize
Exit Sub
End If
' Si ComboBox1 tiene un valor (código)
encontrado = False
With ListBox1
' Limpiar ListBox
.RowSource = ""
' Definir ColumnCount para el ListBox
.ColumnCount = 6 ' 6 columnas (B, C, D, E, F, M)
' Columnas específicas: B, C, D, E, F, M (números de columna)
columnas = Array(2, 3, 4, 5, 6, 13)
.ColumnWidths = "70;90;90;90;90;90;0;0;0;0;0;0;0;0"
.ColumnHeads = False
' Agregar la cabecera al ListBox (desde la fila 4, columnas B, C, D, E, F, M)
.AddItem hoja.Cells(4, columnas(0)).Value ' Columna B
For ii = 1 To UBound(columnas)
.List(0, ii) = hoja.Cells(4, columnas(ii)).Value ' Añadir encabezados de las otras columnas
Next ii
' Determinar última fila con datos en la columna B
ultimaFila = hoja.Cells(hoja.Rows.Count, "B").End(xlUp).Row
' Recorrer desde la fila 5 hacia abajo
For fila = 5 To ultimaFila
If hoja.Cells(fila, 2).Value = codigo Then ' Columna B
encontrado = True
' Añadir nueva fila al ListBox (empieza en la segunda fila del ListBox)
.AddItem hoja.Cells(fila, columnas(0)).Value ' Columna B
For i = 1 To UBound(columnas)
' Asegurarse de que se estén agregando todos los valores correctamente
.List(Me.ListBox1.ListCount - 1, i) = hoja.Cells(fila, columnas(i)).Value ' Rellenar las otras columnas
Next i
End If
Next fila
End With
If Not encontrado Then
MsgBox "No se encontró el código en la hoja.", vbInformation
End If
End Sub