【问题标题】:VBA Excel - go to next page in page layout viewVBA Excel - 在页面布局视图中转到下一页
【发布时间】:2014-03-22 05:50:00
【问题描述】:

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

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

【问题讨论】:

    标签: excel vba page-layout


    【解决方案1】:

    最简单的方法是切换到页面布局视图,然后使用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 ( 2 + 1)。

    【讨论】:

      【解决方案2】:

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

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

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

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-31
        • 2019-04-04
        • 2020-10-18
        • 1970-01-01
        • 2014-01-17
        • 1970-01-01
        • 2020-04-18
        • 1970-01-01
        相关资源
        最近更新 更多