Imprimir solo el rango de filas ocupadas

Quisiera una macro que solo imprima si en un rango especifico hay filas ocupadas ejemplo :

=A5:C54, en ese rango si esta ocupado solo hasta =A5:C40 imprimir

En realidad el rango lo utilizare como referencia, para que en otra hoja se imprima la cantidad justa de acuerdo a las filas ocupadas.

Para imprimir utilizo una macro que me permite elegir entre imprimir a blanco y negro o a color :

Function PrintWithColourCheck2()

Dim i As Long

With ActiveSheet
ActiveSheet.Unprotect ("Dr4gonnike01")
'Hide rows where the first column is empty
'(that's what you're trying to do here right?)
For i = 1 To 33
If .Range("A" & i).Value = 0 Then _
.Rows(i).EntireRow.Hidden = False
Next i

.PageSetup.BlackAndWhite = _
MsgBox("¿Desea imprimir a Color?, Seleccione SI Para imprimir COLOR y NO para imprimir a BLANCO y NEGRO", _
vbYesNo, "Impresion") = vbNo

.PrintOut From:=1, To:=10, Copies:=1, Collate:=True

'Tidy up
.PageSetup.BlackAndWhite = False
Rows("1:33").EntireRow.Hidden = False

ActiveSheet.Protect ("Dr4gonnike01")
End With

End Function

1 Respuesta

Respuesta
1

H o l a:

Pero si quieres ocultar las filas que en la columna A = 0, entonces tienes que cambiar esto:

For i = 1 To 33
If .Range("A" & i).Value = 0 Then _
.Rows(i).EntireRow.Hidden = False
Next i

Por esto

    For i = 5 To 54
        If .Range("A" & i).Value = 0 Then _
            .Rows(i).EntireRow.Hidden = True
    Next i

Cambia el 5 y el 54 por el rango de filas que quieras revisar.


':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

si, lo que pasa es que de esa macro solo me interesa imprimir en blanco y negro o color. lo demás no, ya que esas filas las ocupo, ahora el problema esta en que si solo tengo ocupadas 10 filas, no quisiera imprimir las 50 hojas que tengo, sino solo las 10 ocupadas en las filas como referencia A5:C54

Gracias por tu tiempo Dante Amor

en esa macro se imprimen 10 hojas y si solo 5 filas de las filas como referencia fueron ocupadas o tienen datos. que se impriman solo 5 hojas y no las 10, ya que las demás estarían en blanco, pero tengo otra que imprime 50, es solo para aclarar.

Disculpa, pero ya no entendí.

Envíame tu archivo y me dices cómo es que tienes 50 hojas para imprimir, pero solamente quieres que se impriman 5 filas. Es más fácil entender si me lo explicas con tu archivo. Entonces envíame tu archivo, pero me muestras en dónde están las 50 hojas que se imprimen, y me pintas de amarillo las 5 filas que quieres que se impriman. De ese ejemplo que me envíes yo te hago la macro. Entre más claro y más completo me envíes tu ejemplo, más práctico será entregarte la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Daniel Herrera Flores” y el título de esta pregunta.

se me hace ocurrido crear un contador de filas ocupadas con la formula =contara(A5:C54) eso me dirá las filas ocupadas en el rango A5:C54 luego crear una macro que imprima los boletines de acuerdo a la cantidad de filas ocupadas

si fueron 10 filas ocupadas

PrintOut From:=1, to:=10, Copies:=1, Collate:=True

si fueron 20 filas ocupadas

PrintOut From:=1, to:=20, Copies:=1, Collate:=True

esa es la idea

Te anexo la macro

Sub ImprimirBoletines()
'Por.Dante Amor
    Set h1 = Sheets("Registro")
    Set h2 = Sheets("Boletines Generales")
    h2.PageSetup.PrintArea = ""
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    unombre = h1.Range("A" & u)
    existe = False
    Set b = h2.Columns("B:E").Find(unombre, lookat:=xlWhole, LookIn:=xlValues)
    If Not b Is Nothing Then
        For i = b.Row To h2.Range("A" & Rows.Count).End(xlUp).Row
            If h2.Cells(i, "A") = "DIRECTORA/DIRECTOR" Then
                fila = i
                existe = True
                Exit For
            End If
        Next
        If existe Then
            h2.Select
            h2.PageSetup.PrintArea = "$A$1:$L$" & fila
            PrintWithColourCheck5b
        Else
            MsgBox "No existe la referencia DIRECTORA/DIRECTOR"
        End If
    Else
        MsgBox "No se puede imprimir, ya que el último nombre no existe en Boletines"
    End If
End Sub
'
Function PrintWithColourCheck5b()
    Dim i As Long
    With ActiveSheet
        ActiveSheet.Unprotect ("Dr4gonnike01")
        .PageSetup.BlackAndWhite = _
        MsgBox("¿Desea imprimir a Color?, Seleccione SI Para imprimir COLOR y NO para imprimir a BLANCO y NEGRO", _
        vbYesNo, "Impresion") = vbNo
        '.PrintOut From:=1, To:=50, Copies:=1, Collate:=True
        .PrintOut Copies:=1, Collate:=True
        .PageSetup.BlackAndWhite = False
        ActiveSheet.Protect ("Dr4gonnike01")
    End With
End Function

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas