2015-02-11 68 views
0

所以这是我的问题: 我有一个模板工作表中粘贴数据。数据的行数总是不一样的(我不认为它会高于30,但我编码的容量为103) 粘贴数据后,子应相应地设置打印区域和边框,但不是最后一行数据,但到包含数据的最后一页。我写这个丑陋,它似乎工作。我不知道是否有一种方法可以做到这一点没有嵌套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 

回答

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 

从你的问题,它看起来像要舍帕罗高达14最接近的倍数,然后打印的行数+ 1

考虑到这一点,你这样做代码首先获取帕罗最初,然后计算出需要添加的内容以将其舍入到下一个倍数14.最后它将值+1加到parow。对于较短的(但不读选项)只需使用

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

好吧,我用这之前我添加打印标题,但每当帕罗等于14的倍数它增加了一个额外的空白页,而不是保持原样。我想我可以添加一个if循环来检查这个。 – 2015-02-11 17:14:06

+0

想通了! 'parow = wsp.Range(“a”&Rows.Count).End(xlUp).row If Not(parow-1)Mod 14 = 0 then parow = parow +(parow mod 14)Else End If' – 2015-02-11 18:55:39