3

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

我已经设置了页边距、页眉和其他格式的页面布局,并希望根据屏幕上显示的布局填写我的报告。由于布局已设置,我可以对单元格引用进行硬编码以放置我的范围,但我宁愿动态确定这一点。有什么解决方案吗?

4

2 回答 2

3

执行此操作的最简单方法是更改​​为页面布局视图,然后使用LargeScroll它向下转到您想要的任何页面。

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

'1' 是您想要执行的 LargeScrolls 的数量,因此在上面的示例中,无论您身在何处,您都会向下翻 1 页。这适用于页面布局视图中的任何页面。

这是一个示例,如果您想转到第 2 页,但不确定您的代码留在了哪一页。它用于cells(1,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,因为它从当前页面(2 + 1 )。

于 2012-08-23T15:50:39.703 回答
0

这是一个艰难的问题,但一个建议可能是,如果您已经设置了布局,那么将其视为您的模板页面。您可以使用一个技巧来确定您是否会“超出范围”,可以这么说。在将新范围复制到模板表之前,请确定您要复制的内容的高度,并将其与目标(页面将中断的位置)的“剩余”高度保持一致。如果超出范围,请将其移至下一页,以免按页面划分范围。

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

要确定高度,当您在代码中选择范围时,只需检查它的 Height 属性 (Range("A1").Height) ,它就会让您知道下一个范围的 Top 属性将位于何处。此外,您可以对标准高度进行硬编码(只需突出显示适合一页的单元格并转到即时窗口并键入 ?Selection.Height ,您就可以使用标准高度)。

希望这可以帮助!

于 2012-01-25T04:38:39.187 回答