Macro que imprima parte de una plantilla, determinando el área de impresión de acuerdo a la fecha de terminación de un contrato

¿Cómo crear una macro que me imprima hasta un rango determinado por la fecha de finalización de un contrato?

Como verán en esta plantilla estoy calculando intereses sobre prestaciones sociales, quiero poner un código en un botón de macro que me imprima solamente hasta el rango que comprenda el ultimo mes y año de la terminación del contrato, en este caso este trabajador termino su contrato de trabajo en Febrero de 2015, es hasta allí que quiero que imprima, por supuesto que las fechas de terminación serán variables. Podrían suministrarme el código. Gracias

1 respuesta

Respuesta
2

Te anexo la macro para que la pongas en tu botón.

Indicaste hasta dónde debería imprimir, pero no pusiste dónde empieza. Le puse en la macro en esta línea que empezara desde la celda C2

ActiveSheet.PageSetup.PrintArea = "C2:T" & i

Cambia C2 en la macro por la celda desde donde quieras que inicie la impresión.

Sub ImprimirPlantilla()
'Por.Dante Amor
    año = Year([O9])
    mes = Format([O9], "mmmm")
    For i = 13 To Range("C" & Rows.Count).End(xlUp).Row
        If Cells(i, "C") = año And Cells(i, "E") = mes Then
            existe = True
            Exit For
        End If
    Next
    If existe Then
        ActiveSheet.PageSetup.PrintArea = "C2:T" & i
        ActiveSheet.PrintOut Copies:=1, Collate:=True
    Else
        MsgBox "El año y el mes no existen en la hoja", vbExclamation
    End If
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Estimado Dante, gracias por tu tiempo, cuando corro el código que me diste, me da error pues el botón de la macro lo tengo en una hoja llamada "LOTTT" y la plantilla la tengo en otra hoja de nombre "INTERESES", por cierto la impresión comienza efectivamente en la celda "C2" de la hoja "INTERESES" y termina en una celda variable dependiendo del tiempo de trabajo del trabajador.  Solo me falta que me direccione la impresión hacia  la hoja "INTERESES"

Te anexo la macro actualizada

Sub ImprimirPlantilla()
'Por.Dante Amor
    Set h = Sheets("INTERESES")
    año = Year(h.[O9])
    mes = Format(h.[O9], "mmmm")
    For i = 13 To h.Range("C" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "C") = año And h.Cells(i, "E") = mes Then
            existe = True
            Exit For
        End If
    Next
    If existe Then
        h.PageSetup.PrintArea = "C2:T" & i
        h.PrintOut Copies:=1, Collate:=True
    Else
        MsgBox "El año y el mes no existen en la hoja", vbExclamation
    End If
End Sub

Recuerda valorar la respuesta.

Estimado, espero que con esta consulta pueda yo resolver esto, le cuento que me sale un mensaje así "el año y el mes no existen en la hoja" bien, el área total de impresión es el rango C2:T483 pero ese rango nunca se utiliza completo pues como ya le dije, el área total de impresión varia según la fecha de culminación de cada contrato.  No se como resolver este problema, la macro no me funciona solo me da ese mensaje, gracias por tu ayuda.

La macro funciona según lo que pusiste en la imagen.

En la celda O9 tienes que poner una fecha.

En la columna C el año y en la columna E el nombre del mes (Enero, Febrero, Marzo, etc)

Si en tienes otros datos en esas referencias, entonces te regresa ese mensaje.

¿Dime qué datos tienes en esas referencias?

¿O tienes fechas en las columnas C y E?

Amigo muchas gracias...!!!

Como pudiera hacer para enviarte el archivo porque en la página no veo como hacer para adjuntar archivos.

Si tienes otra duda, crear una nueva pregunta y la reviso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas