设置整页的打印区域

Setting print area for a whole page

所以这是我的问题: 我有一个用于粘贴数据的模板 sheet。数据行的数量总是不同的(我不认为它会高于 30,但我将容量编码为 103) 粘贴数据后,sub要相应设置打印区域和边框,但不是最后一行数据,而是包含数据的最后一页。我写了这个丑陋的东西,它似乎有效。我确实想知道是否有一种方法可以在不嵌套 IF 语句的情况下执行此操作(对于更大的数据集,我将不得不重新执行此操作)

parow = wsp.Range("A" & Rows.Count).End(xlUp).row
    If parow <= 15 Then
        parow = 15
    Else:
        If parow <= 29 Then
            parow = 29
        Else
        If parow <= 43 Then
            parow = 43
        Else
            If parow <= 58 Then
                parow = 58
            Else
                If parow <= 73 Then
                    parow = 73
                Else
                    If parow <= 88 Then
                        parow = 88
                    Else
                        If parow <= 103 Then
                            parow = 103
                        Else
                        End If
                    End If
                End If
            End If
        End If
        End If
    End If

With wsp.PageSetup
    .PrintArea = "$A:$G" & parow
    .PrintTitleRows = ":"
    .Orientation = xlLandscape
    .FitToPagesWide = 1
End With

不要乱七八糟的 ifs,试试这个:

Dim parow As Long
Dim dif As Long
parow = wsp.Range("A" & Rows.Count).End(xlUp).row
dif = 14 - (parow mod 14)
parow = parow + dif + 1

根据你的问题,你似乎想将 parow 舍入到最接近的 14 的倍数,然后打印那么多行 + 1。

考虑到这一点,此代码首先像您最初所做的那样获取 parow,然后计算出需要添加的内容以将其四舍五入为下一个 14 的倍数。最后它将该值 + 1 添加到 parow。对于较短(但可读性较差的选项),只需使用

parow = wsp.Range("A" & Rows.Count).End(xlUp).row
parow = parow + (14 - (parow mod 14)) + 1