设置整页的打印区域

时间:2015-02-11 15:54:34

标签: vba if-statement printing

所以这是我的问题: 我有一个模板表,其中粘贴了数据。数据行总是不同的(我不认为它会高于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$1:$G" & parow
    .PrintTitleRows = "$1:$1"
    .Orientation = xlLandscape
    .FitToPagesWide = 1
End With

1 个答案:

答案 0 :(得分:0)

而不是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