通常,当Dave打开两个工作簿时,他会使用Arrange |水平以同时查看它们。这样可以在两个工作簿之间平均分配空间。但是,经常会发生Dave只希望在一个工作簿中看到几行数据而在另一工作簿中看到多行的情况。他想知道是否有一种方便的方法来手动调整较小的工作簿的大小,并让Excel用第二个工作簿填充屏幕上的剩余空间。

手动完成此操作的方法是Dave(和大多数其他Excel用户)已经熟悉的方法:水平排列窗口,调整顶部窗口的大小,然后调整底部窗口的大小。这样,您就可以按照自己想要的方式来完成工作。

如果您想要一种自动调整窗口大小的方法,可以使用宏来完成任务。下面的宏依赖于您按所需的方式调整第一个窗口的大小,然后自动调整第二个窗口的大小,以占据顶部窗口下方的剩余空间。

Sub UnevenSplit1()

Dim Ht0 As Single     Dim Ht1 As Single     Dim Ht2 As Single     Dim Top2 As Single

If Windows.Count = 2 Then         With Windows(1)

Ht1 = .Height             .WindowState = xlMaximized             Ht0 = .Height         End With         Top2 = Ht1 + 3         Windows.Arrange ArrangeStyle:=xlHorizontal         With Windows(1)

.Top = 1             .Height = Ht1         End With         With Windows(2)

.Top = Top2             .Height = Ht0 - Ht1 - 22         End With         Windows(1).Activate     End If End Sub

如果仅打开两个工作簿,则该宏将仅调整工作簿窗口的大小。如果您有更多或更少的内容,它将看起来好像什么都没有发生。

您也可以通过使宏重新调整顶部窗口的大小来使自动化又迈出一步。以下示例以您的顶部窗口占据屏幕的25%,底部窗口占据屏幕的75%结束。

Sub UnevenSplit()

Dim Ht1 As Single     Dim Ht2 As Single     Dim Ht1a As Single     Dim Ht2a As Single     Dim Top2 As Single

If Windows.Count = 2 Then         Windows.Arrange ArrangeStyle:=xlHorizontal         Ht1 = Windows(1).Height         Ht2 = Windows(2).Height         Ht1a = Ht1 / 2         Top2 = Ht1a + 3         Ht2a = Ht2 + Ht1a

With Windows(1)

.Top = 1             .Height = Ht1a         End With         With Windows(2)

.Top = Top2             .Height = Ht2a         End With         Windows(1).Activate     End If End Sub

您还应该知道,此宏的值在很大程度上取决于您在Windows中可见的内容。如果色带在其整个垂直深度都需要占用很多屏幕空间。实际上,这可能会花费太多,即使顶部窗口占据了屏幕高度的25%,也可能不会显示工作表的任何行,因为该空间已被功能区和其他界面元素占用。

有两种可能的解决方案。首先是最小化屏幕元素,例如功能区。 (双击任何功能区选项卡以最小化功能区。)当然,另一解决方案是让宏使用不同的计算来确定窗口的最终大小。 (最终的窗口高度在变量Ht1a和Ht2a中。)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13380)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。