2015-02-11 52 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