代码之家  ›  专栏  ›  技术社区  ›  spinjector

在Excel2007中,为什么拖动手动水平分页符会导致上一个自动分页符更改为手动…?

  •  3
  • spinjector  · 技术社区  · 6 年前

    在过去的几天里,我一直在研究一些Excel2007VBA代码,它管理复杂工作表中的分页符。在经历了很多挫折之后,我刚刚解决了一个让我发疯的“翻页”问题,我做了下面的发现,这让我想到了“为什么?”…

    在分页符视图中,并且鼠标用于拖动 手册 水平分页符进一步分解工作表,它导致上一页 自动的 要切换到的分页符 手册 . 如果拖动分页符,则不会发生这种情况 向上的 ;只有在拖动分页符时才会发生 向下 .

    有人能解释这一现象的机制和原因吗?这看起来很不直观,给我带来了一些严重的挫败感,直到不久前我才明白。我可以理解,移动分页符会影响下一页的内容,但是为什么它上面的内容会影响下一页呢?

    下面是一些将要设置演示的VBA。

    1. 运行它。
    2. 拖动手动分页符(第60行上方的那个)。
    3. 什么都没发生。
    4. 然后把它拖下来。
    5. 自动分页符进一步将工作表切换到手动。
    6. 为什么?

    如果新切换的手动分页符被删除,则可以重复测试,之后它将恢复为自动。然后拖动另一个,再次观察它的切换。

    Public Sub PageBreakTest()
        Dim x As Long
        Dim y As Long
        For y = 1 To 75
            For x = 1 To 20
                Cells(y, x).Value = Cells(y, x).Address(0, 0)
            Next
        Next
        Rows("60:60").PageBreak = xlPageBreakManual
        ActiveWindow.View = xlPageBreakPreview
        Range(Cells(1, 1), Cells(75, 30)).Select
        ActiveWindow.Zoom = True
        Range("A1").Select
    End Sub
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Asger    6 年前

    这是按设计的(也在我的Excel 2016中)。

    如果向上拖动页面的结尾,则通常希望缩短该页面。如果上一个分页符仍然是自动的,这就可以工作。

    如果将分页符的结尾向下拖动,则通常希望放大该页上的打印行数。如果上一个分页符仍然是自动的,您会突然有一个额外的分页符,页面大小只有一行。为了防止这种情况发生,上一个中断被设置为自动。

    垂直分页符也会发生同样的情况:如果您将其中一个移到左侧(靠近上一个自动分页符,较小的页面),则上一个分页符将保持自动。如果你把它右移一列,前一列也会变成手动的。

    只是一个补充:如果通过添加分页符手动调整页面大小(行数),那么通常从第1页开始到工作表的末尾。在此期间,当前页面下方的所有剩余分页符都将保持自动状态,直到您触摸它们。