Macro que me permita adicionar registro al cumplir función

Para Dam; primero que todo, muchas gracias por la ayuda que me puedas brindar.

Desde un formulario llamo a una rutina que rellena un secuencia de meses, desde enero a Diciembre.

    j = 11
    For i = f To g
        Cells(j, "A") = Sheets("UNO").Cells(i, "A")
        Cells(j, "B") = Sheets("UNO").Cells(i, "B")
        Cells(j, "C") = ((Cells(6, "D") / Cells(j, "B")) * Range("D2"))
        Cells(j, "D") = Cells(j, "C") - Range("D2")
        j = j + 1
    Next

La secuencia en mención funciona perfectamente.

El inconveniente actual, es que al llegar el mes de Junio y Diciembre deben adicionar ántes del registro siguiente, un Registro que corresponde a "Prima Junio" y "Prima Diciembre".

El resultado actual es:

Enero

Febrero

Marzo

Abril

Mayo

Junio

Julio

Agosto

Septiembre

Octubre

Noviembre

Diciembre

El resultado esperado sería:

Enero

Febrero

Marzo

Abril

Mayo

Junio

Prima Junio

Julio

Agosto

Septiembre

Octubre

Noviembre

Diciembre

Prima Diciembre

1 respuesta

Respuesta
1

No entiendo bien qué datos estás pasando, tampoco pusiste la macro completa, no se ve cuánto vale f y g, pero estoy suponiendo que va de 1 a 12, es decir, de enero a diciembre.

Suponiendo lo anterior, quedaría algo como esto:

    j = 11
    For i = f To g
        Cells(j, "A") = Sheets("UNO").Cells(i, "A")
        Cells(j, "B") = Sheets("UNO").Cells(i, "B")
        Cells(j, "C") = ((Cells(6, "D") / Cells(j, "B")) * Range("D2"))
        Cells(j, "D") = Cells(j, "C") - Range("D2")
        j = j + 1
        'prima
        If i = 6 Or i = 12 Then
            Cells(j, "A") = "Prima"
            j = j + 1
        End If
    Next

Si no es lo que necesitas, tendrás que darme más información, una imagen de lo que tienes en la hoja "uno" y también de la hoja en donde estás poniendo los resultados.

Saludos. Dante Amor

Si es lo que necesitas.

DAM, primero que todo infinitas gracias.

En cuanto a la solución funciona muy bien, pero únicamente en el primer ciclo, eso es cuando se encuentra el primer Diciembre, en la fila siguiente coloca el valor deseado, después no lo vuelve a colocar.

Tuve que hacer una pequeña modificación:

    j = 11
    For i = f To g
        Cells(j, "A") = Sheets("UNO").Cells(i, "A")
        Cells(j, "B") = Val(porcentaje.Value) / 100
'        Cells(j, "C") = Sheets("UNO").Cells(i, "A")
        Cells(j, "D") = Sheets("UNO").Cells(i, "B")
        Cells(j, "E") = CDbl(V3)
        Cells(j, "F") = ((Cells(6, "D") / Cells(j, "B")) * Cells(j, "C"))
'        Cells(j, "B") = Sheets("REPORTE").Range("C1").Value
'        Cells(j, "A") = Sheets("UNO").Cells(i, "B")
        j = j + 1
'prima
        If i = 7 Or i = 13 Then
            Cells(j, "A") = "Prima"
            j = j + 1
        End If
    Next

Quedo pendiente.

Cuando te refieres a: "pero estoy suponiendo que va de 1 a 12"; eso es muy relativo, pues puede ir de febrero de 2005 a Mayo de 2011, por ejemplo; eso lo define el usuario desde el formulario existente.

Dam, en el siguiente enlace encuentras un archivo de lo que estoy trabajando.

Quedo atento, mil gracias.

Ayuda de Primas

Así quedaría el código

    For i = f To g
        Cells(j, "A") = Sheets("UNO").Cells(i, "A")
        Cells(j, "B") = Val(porcentaje.Value) / 100
        Cells(j, "D") = Sheets("UNO").Cells(i, "B")
        Cells(j, "E") = CDbl(V3)
        Cells(j, "F") = Sheets("REPORTE").Range("B2").Value
        j = j + 1
        'prima
        Select Case Month(Cells(j - 1, "A"))
            Case 6
                Cells(j, "A") = "Prima Junio"
                j = j + 1
            Case 12
                Cells(j, "A") = "Prima Diciembre"
                j = j + 1
        End Select
    Next

Saludos.Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas