Основываясь на ответе Чаффа, я написал следующий макрос. Он выполняет то, что описывает chuff - и дополнительно называет два окна "Панель инструментов" и "Данные" и скрывает все элементы (полосы прокрутки, вкладки листа, заголовок строки / столбца) из панели мониторинга.
Чтобы запустить его, сделайте следующее:
- Скопируйте код ниже
- В Excel перейдите в редактор Visual Basic (Alt - F11)
- Вставьте новый модуль, щелкнув правой кнопкой мыши по проекту в левом дереве и выбрав Вставить -> Модуль (если вы хотите применить эту технику к другим рабочим книгам, вместо этого поместите его в свою личную макро-книгу)
- Вставьте код в новый модуль
- При желании измените количество столбцов или заголовков двух окон, изменив первые строки кода, начиная с
Const
- Выполните код - либо нажмите в первой процедуре и нажмите F5 - либо вернитесь в Excel (Alt - F11) и нажмите Alt - F8. Выберите здесь макрос и нажмите « Выполнить». (Обратите внимание, что вы также можете назначить ему ярлык в этом диалоговом окне).
Вот макрос:
Sub SplitWindows()
Const cIntPaneColumns As Integer = 2
Const cStrPaneName As String = "Dashboard"
Const cStrMainName As String = "Data"
Dim i As Integer
Dim wndMain As Window, wndPane As Window
Dim dblOldWidth As Double, dblPaneWidth As Double
Set wndMain = ActiveWindow
If ThisWorkbook.Windows.Count > 1 Then
If MsgBox("Multiple windows for current workbook are already displayed. Do you want to close/rearrange them?", vbYesNo) = vbYes Then
For i = 2 To ThisWorkbook.Windows.Count
ThisWorkbook.Windows(1).Close
Next
Else
Exit Sub
End If
End If
Set wndMain = ActiveWindow
wndMain.WindowState = xlNormal
Set wndPane = wndMain.NewWindow
ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
dblOldWidth = wndPane.Width
dblPaneWidth = Range("A1").Resize(, cIntPaneColumns).Width
ConfigureWindow wnd:=wndPane, blnShowElements:=False, _
strCaption:=cStrPaneName, dblWidth:=dblPaneWidth, _
dblLeft:=1
ConfigureWindow wnd:=wndMain, blnShowElements:=True, _
strCaption:=cStrMainName, _
dblWidth:=wndMain.Width + (dblOldWidth - dblPaneWidth), _
dblLeft:=dblPaneWidth
With wndMain
.ScrollColumn = cIntPaneColumns + 1
.Activate
.ActiveSheet.Range("A1").Offset(, cIntPaneColumns + 1).Select
If .FreezePanes Then .FreezePanes = False
.FreezePanes = True
End With
End Sub
Private Sub ConfigureWindow(wnd As Window, _
blnShowElements As Boolean, _
strCaption As String, _
dblWidth As Double, _
dblLeft As Double)
With wnd
.Width = dblWidth
.Left = dblLeft
.DisplayHeadings = blnShowElements
.DisplayHorizontalScrollBar = blnShowElements
.DisplayVerticalScrollBar = blnShowElements
.DisplayWorkbookTabs = blnShowElements
.Caption = strCaption
End With
End Sub