Macro para copiar datos con tres condiciones excel vba

Para Dante

Hola Dante buen día en mi proyecto tengo un formulario como le muestro en la imagen y al seleccionar las condiciones del grado, sección y periodo, busque en la Hoja1 los datos y los copie a la hoja "REPORTE" a partir de la fila 4. Estaré agradecido.

Hoja1

1 Respuesta

Respuesta
1

En un correo nuevo envíame el archivo. ¿Quieres copiar toda la fila?

H o l a: Dante.

En la hoja que te envié está las columnas que necesito. Gracias! :)

Quise decir, en la hoja reporte está la columnas que necesito 

Pero no viene el excel, puedes enviarme el archivo de excel, me cómo se llama el formulario

El formulario es "UserForm1" 

Ya te envié el archivo

Te anexo el código

Private Sub ComboBox1_Change()
    Call Reporte
End Sub
Private Sub ComboBox2_Change()
    Call Reporte
End Sub
Private Sub ComboBox3_Change()
    Call Reporte
End Sub
'
Sub Reporte()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("reporte")
    h2.Range("A6:D" & h2.Range("A" & Rows.Count).End(xlUp).Row + 6).ClearContents
    j = 6
    n = 1
    '
    For i = 5 To h1.Range("A" & Rows.Count).End(xlUp).Row
        grad = IIf(ComboBox1 = "", h1.Cells(i, "C"), ComboBox1)
        secc = IIf(ComboBox2 = "", h1.Cells(i, "D"), ComboBox2)
        peri = IIf(ComboBox3 = "", h1.Cells(i, "F"), ComboBox3)
        If IsNumeric(grad) And grad <> "" Then grad = Val(grad)
        '
        If h1.Cells(i, "C") = grad And h1.Cells(i, "D") = secc And h1.Cells(i, "F") = peri Then
            h2.Cells(j, "A") = n
            h2.Cells(j, "B") = h1.Cells(i, "A")
            h2.Cells(j, "C") = h1.Cells(i, "B")
            h2.Cells(j, "D") = h1.Cells(i, "E")
            n = n + 1
            j = j + 1
        End If
    Next
End Sub
'
Private Sub UserForm_Initialize()
    ComboBox1. AddItem "1"
    ComboBox1. AddItem "2"
    ComboBox1. AddItem "3"
    '
    ComboBox2. AddItem "A"
    ComboBox2. AddItem "B"
    ComboBox2. AddItem "C"
    '
    ComboBox3. AddItem "2015-I"
    ComboBox3. AddItem "2015-II"
    ComboBox3. AddItem "2016-I"
End Sub

¡Gracias Dante quedó genial! 

Dante. 

el IIf para evaluar el parámetro 

grad = IIf(ComboBox1 = "", h1.Cells(i, "C"), ComboBox1)

como evalúas aquí ?

Si el combo es vacío, entonces grad es igual a lo que hay en la celda, si no es vacío, entonces grad es igual al combo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas