pgLoc = rng(rng.Count).Row + 1 'Rng.Count是Rng包含的单元格的个数,rng(rng.Count).Row 取得当前数据区域的最后的行号
vNum = Me.VPageBreaks.Count '分页符的格式
For i = 1 To vNum
Err.Clear
pgLoc = Me.VPageBreaks(i).Location.Column '分页符所在的列数
'如果分页符巧好在数据区域的边缘,那么Me.VPageBreaks(i).Location.Column 就会产生错误“9”这就是今天早上代码错误的原因
If i = vNum And Err.Number = 9 Then pgLoc = rng(rng.Count).Column + 1: flagV = True
If pgLoc > Target.Column And vBK = 0 Then vBK = i
Next
If Me.PageSetup.Order = xlDownThenOver Then
iPg = (hNum + 1) * (vBK - 1) + hBK
Else
iPg = (vNum + 1) * (hBK - 1) + vBK
End If
39楼的问题试着解释一下,不知道能够说明白,假设现在打印顺序为先列后行(xlDownThenOver),并且有9页(分页符将页面分成了“井”字形),选中的单元格在井字的中央,也就是第五页。
此时,hNum是水平分页符的个数为2, 激活单元格在第vBK个垂直分页符之前,所以值为2,类似 hBK=2,结果就是(2+1)*(2-1)+2=5.
[此贴子已经被作者于2005-10-16 20:29:26编辑过] |