所以这是我的问题: 我有一个模板表,其中粘贴了数据。数据行总是不同的(我不认为它会高于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
答案 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