¿Error en Combo Box y filtrado?

Nuevamente tengo un problema, tengo un excel con los siguiente valores iniciando en la columna A: codigo-B:descripcion-C:proveedor-las columnas siguiente son los meses, enero. Febrero hasta la K. Cuento con un UserForm que contiene un combo box un list box y un boton, lo que quisiera si se pude lograr es que en el combobox me aparezcan los meses para seleccionar, por ejemplo elijo enero en el combobox y en el listbox me aparezcan las columnas de codigo, descripcion, proveedor y enero que seleccione en el combobox, y apretando el boton me cree un nuevo libro con esos valores.

Respuesta
2

H o la: Envíame tu archivo con el userform y varios datos de ejemplo en la hoja.

También me envías otro archivo de ejemplo, como si hubieras generado la información de Enero.

Me dices qué nombre deberá llevar el archivo cada vez que presiones el botón.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “robert lazza” y el título de esta pregunta.

Dante muchas gracias por tu pronta respuesta, te envié el mail con lo solicitado, cualquier duda quedo a disposición.

Abrazo.

 h   o l a:

Te anexo el código

Private Sub ComboBox1_Change()
'Por.Dante Amor
    'filtro con el cambio del combo
    ListBox1.Clear
    If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Then
        MsgBox "Selecciona un mes correcto"
        ComboBox1.SetFocus
        Exit Sub
    End If
    Set h1 = Sheets("Entrada")
    col = 0
    For i = 4 To h1.Cells(1, Columns.Count).End(xlToLeft).Column
        If UCase(h1.Cells(1, i)) = UCase(ComboBox1.Value) Then
            col = i
            Exit For
        End If
    Next
    If col = 0 Then
        MsgBox "El nombre del mes no existe en la hoja"
        ComboBox1.SetFocus
        Exit Sub
    End If
    '
    Set h1 = Sheets("Entrada")
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        ListBox1.AddItem h1.Cells(i, "A")
        ListBox1.List(ListBox1.ListCount - 1, 1) = h1.Cells(i, "B")
        ListBox1.List(ListBox1.ListCount - 1, 2) = h1.Cells(i, "C")
        ListBox1.List(ListBox1.ListCount - 1, 3) = h1.Cells(i, col)
    Next
End Sub
'
Private Sub CommandButton2_Click()
'Por.Dante Amor
    'exportar a un archivo
    Application.ScreenUpdating = False
    If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Then
        MsgBox "Selecciona un mes correcto"
        ComboBox1.SetFocus
        Exit Sub
    End If
    Set h1 = Sheets("Entrada")
    Set h2 = Sheets("Filtrado")
    h2.Cells.Clear
    col = 0
    For i = 4 To h1.Cells(1, Columns.Count).End(xlToLeft).Column
        If UCase(h1.Cells(1, i)) = UCase(ComboBox1.Value) Then
            col = i
            Exit For
        End If
    Next
    If col = 0 Then
        MsgBox "El nombre del mes no existe en la hoja"
        ComboBox1.SetFocus
        Exit Sub
    End If
    If ListBox1.ListCount = 0 Then
        MsgBox "No hay registros a exportar"
        Exit Sub
    End If
    '
    h1.Range("A:C").Copy h2.Range("A1")
    h1.Columns(col).Copy h2.Range("D1")
    h2.Copy
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ComboBox1.Value & " exportado.xlsx"
    ActiveWorkbook.Close
    Application.ScreenUpdating = True
    MsgBox "Archivo exportado"
End Sub
'
Private Sub CommandButton3_Click()
    Unload Me
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    For i = 1 To 12
        ComboBox1.AddItem UCase(Format(DateSerial(Year(Date), i, 1), "mmmm"))
    Next
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas