VBA Excel – 转到页面布局视图中的下一页

我正在将各种范围复制到新的Excel工作表中,并在“页面布局”视图中查找引用下一个页面或任何特定页面的解决scheme。

我已经使用页边距,页眉和其他格式设置了页面布局,并且希望根据屏幕上显示的布局来填写我的报告。 由于布局设置,我可以硬编码单元格引用来放置我的范围,但我宁愿dynamic地确定这一点。 任何解决scheme在那里?

最简单的方法是更改​​为“页面布局”视图,然后使用LargeScroll查看您想要的页面。

 ActiveWindow.View = xlPageLayoutView '<--- Changes view to "Page Layout" ActiveWindow.LargeScroll 1 '<--- Scrolls down a full page 1 time 

'1'是你要执行的大数卷,所以在上面的例子中,你从任何地方往下走1页。 这将从页面布局视图中的任何页面工作。

这里有一个例子,如果你想去第2页,但不确定你的代码留给你的页面。 它使用cells(1,1)将您带到第一页的工作表的第一个单元格。

 Cells(1,1).Activate '<--- Takes you to first cell in your worksheet ActiveWindow.View = xlPageLayoutView ActiveWindow.LargeScroll 1 

您可以将“1”更改为任意数字。 请记住,它的工作原理与偏移量相同,所以如果你从A1单元格开始,想要进入3号页面,那么你只能滚动2次,而不是3次。代码看起来像是ActiveWindow.LargeScroll 2因为它会让你从当前页面减less2 (2 + 1)。

这是一个艰难的,但一个build议可能是,如果你已经有了布局设置,那么把它看作你的模板页面。 有一个技巧,你可以用来弄清楚你是否会“超出范围”,所以说。 在将新范围复制到模板表之前,确定要复制的内容的高度,并将其保留在目标(页面将中断的位置)的“剩余”高度处。 如果超出范围,请将其移至下一页,以免页面分割范围。

你怎么知道它是否超出范围? 当您启动您的代码时,您可以计算出每个页面的标准高度。 然后在粘贴时减less它。 这种方式将照顾复制/粘贴时可能具有的不同行高。

为了找出高度,当你在代码中select范围时,只需检查它的高度属性(范围(“A1”)。高度),它会让你知道下一个范围的Top属性的位置。 此外,你可以硬编码的标准高度(只需突出显示在一个页面上的单元格,并转到立即窗口,并键入?Selection.Height,你会有你的标准高度工作)。

希望这可以帮助!

Interesting Posts