Hola Cartagena Lopez,
El problema está cuando hace el filtro, se conservan los cortes de hoja y es por eso que tienes cojas con 3 cuadros, o 2 cuadros, etc.
Para realizar la impresión y acomodar 6 cuadros en cada hoja, se deben realizar varios pasos:
1. Te actualizo las macros que hacen los filtros.
El principal cambio, es que ahora empieza el filtro en la fila 5.
Option Explicit
'
Private Sub CheckBox1_Click()
Call Filtrar
End Sub
Private Sub CheckBox2_Click()
Call Filtrar
End Sub
Private Sub CheckBox3_Click()
Call Filtrar
End Sub
'
Sub Filtrar()
Dim n As Long
Dim arr() As Variant
n = -1
If CheckBox1 Then
n = n + 1
ReDim Preserve arr(n)
arr(n) = "Transferencia con un Débito"
End If
If CheckBox2 Then
n = n + 1
ReDim Preserve arr(n)
arr(n) = "Transferencia con un Crédito"
End If
If CheckBox3 Then
n = n + 1
ReDim Preserve arr(n)
arr(n) = "Financiamiento"
End If
Call desproteger
Application.ScreenUpdating = False
If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
If n > -1 Then
Range("A5", Range("L" & Rows.Count).End(3)).AutoFilter 12, Array(arr), xlFilterValues
End If
Range("L2").Select
Application.ScreenUpdating = True
Call proteger
End Sub
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim f As Range
'
If Target.CountLarge > 1 Then Exit Sub
If Target.Address = "$K$5" Then
Call desproteger
Application.ScreenUpdating = False
If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
If Target.Value <> "" Then
Set f = Range("B:B").Find(Target.Value, , xlValues, xlWhole)
If Not f Is Nothing Then
Range("A6", Range("L" & Rows.Count).End(3)).AutoFilter 1, Target.Value
Else
MsgBox "No existe el renglón presupuestario", vbInformation + vbOKOnly, "Aviso para Intecap"
Range("K5").ClearContents
End If
End If
Range("K5").Select
Application.ScreenUpdating = False
Call proteger
End If
End Sub
'
Sub proteger()
Worksheets("RENGLONES").Protect ("regional2018")
End Sub
'
Sub desproteger()
Worksheets("RENGLONES").Unprotect ("regional2018")
End Sub
2. Debes crear una hoja llamada "Impresion".
3. Para hacer la impresión de lo filtrado o de lo que tengas en la hoja "RENGLONES", se debe copiar la información filtrada de "RENGLONES" y pegar en la hoja "impresion".
Ya con la información en la hoja "impresion", se deben ajustar los saltos de hoja.
4. Te preparé una macro para imprimir, copia la información en la hoja "impresion", ajusta los saltos de hoja y te deja lista la hoja "impresion" para imprimir.
Sub impresion()
Dim h1 As Worksheet, h2 As Worksheet
Dim u1 As Long, u2 As Long, n As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'
Set h1 = Sheets("RENGLONES")
Set h2 = Sheets("Impresion")
h2.Cells.Clear
u1 = h1.Range("D" & Rows.Count).End(3).Row
h1.Range("A1:I" & u1).Copy
h2.Range("A1").PasteSpecial xlPasteColumnWidths
h2.Range("A1").PasteSpecial xlPasteValues
h2.Range("A1").PasteSpecial xlPasteFormats
h2.PageSetup.PrintArea = ""
h2.ResetAllPageBreaks
'
On Error Resume Next
For n = 1 To h2.HPageBreaks.Count
h2.HPageBreaks(1).DragOff Direction:=xlDown, RegionIndex:=1
Next
On Error GoTo 0
'
Call Macro4(h2)
u2 = h2.Range("D" & Rows.Count).End(3).Row
h2.PageSetup.PrintArea = "A1:I" & u2
'
For n = 71 To u2 Step 66
h2.HPageBreaks.Add Before:=h2.Range("A" & n)
Next
End Sub
[Recuerda valorar la respuesta.