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

时间:2012-01-25 04:20:12

标签: excel vba page-layout

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

我已经设置了带有边距,标题和其他格式的页面布局,并希望根据屏幕上显示的布局填写我的报告。由于布局已设置,我可以硬编码单元格引用来放置我的范围,但我宁愿动态地确定它。那里有解决方案吗?

2 个答案:

答案 0 :(得分:3)

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

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

&#39; 1&#39;是您要执行的LargeScrolls的数量,因此在上面的示例中,您可以从任何地方向下翻页。这将适用于页面布局视图中的任何页面。

以下是一个示例,如果您想要转到第2页但不确定您的代码留给您的页面。它使用cells(1,1)将您带到工作表的第一个单元格,该单元格将是第1页。

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

您可以更改&#39; 1&#39;任何数字。请记住,它的作用类似于偏移,所以如果你从单元格A1开始并想要转到第3页,你只会滚动2次而不是3次。代码看起来像ActiveWindow.LargeScroll 2因为它带你去从当前页面下降2(2 + 1)。

答案 1 :(得分:0)

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

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

要计算出高度,当您在代码中选择范围时,只需检查它的高度属性(范围(“A1”)。高度),它会告诉您下一个范围的Top属性将在何处放置。此外,您可以对标准高度进行硬编码(只需突出显示适合一页的单元格,然后转到即时窗口并输入?Selection.Height,您就可以使用标准高度了。)

希望这有帮助!