Часто, когда у Дэйва открыты две книги, он использует Упорядочить | По горизонтали для одновременного просмотра. Это равномерно разделяет пространство между двумя книгами. Однако часто случается, что Дэйв хотел бы видеть только несколько строк данных в одной книге и много строк в другой. Он задается вопросом, есть ли удобный способ вручную изменить размер меньшей книги и заставить Excel заполнить оставшееся место на экране второй книгой.

Ручной способ сделать это — тот, с которым Дэйв (и большинство других пользователей 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

Вы также должны знать, что значение этого макроса во многом зависит от того, что вы видите в своих окнах. Если у вас есть ленты на полной вертикальной глубине, это займет много места на экране. Фактически, это может занять настолько много времени, что даже если верхнее окно занимает 25% высоты экрана, оно может не отображать какие-либо строки вашего рабочего листа, потому что пространство занято лентой и другими элементами интерфейса.

Есть два возможных решения. Первый — минимизировать элементы экрана, такие как лента. (Дважды щелкните любую вкладку ленты, чтобы свернуть ленту.) Другое решение, конечно же, состоит в том, чтобы макрос использовал различные вычисления для определения окончательных размеров окон. (Окончательная высота окон находится в переменных Ht1a и Ht2a.)

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13380) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.