我想冻结范围S1:Y17,隐藏列A:R,从 Z 列开始,我只想冻结前 2 行。
那可能吗?
无法使用任何功能区下的任何选项来完成此操作。
或者,您可以将冻结点设置在 Z18,特别是因为 A:R 列被隐藏或使用查看>新窗口,然后全部排列。
Range("A1").Select
With ActiveWindow
    .SplitColumn = 1
    .SplitRow = 1
    .FreezePanes = True
End With
您可以使用拆分列和行。
确保只需选择一个单元格 Z3,然后在“窗口”菜单上单击“冻结窗格”
在 VBA 中,试试这个:
Range("Z3").select
ActiveWindow.FreezePanes = True
    这在旧版本的 excel 中是可能的。您可以选择任何单元格,转到窗口选项卡和冻结窗格。那个牢房左边和上面的一切都被冻结了。但微软似乎决心在每个新版本的 Office 中删除更多功能。每个都少了我们知道和喜爱的旧功能。很快,您不妨使用 Works 或 Open Office。我希望我可以切换到 Word Perfect,但有太多公司在使用 MS Office。
我知道这个问题很老,但我经常访问它,以至于我想我会添加一个 VBA 版本的@daniellopez46 的答案。此代码将:
S在一个窗口上显示从列开始的范围Z第二个窗口上的列完成电子表格的工作并关闭其中一个窗口后,您可能不想保留已完成的格式,因此我包含了一个ResetWindow宏。
Sub MacroA()
    Dim window1 As Window
    Set window1 = ActiveWindow
    ResetWindowA
    Dim window2 As Window
    Set window2 = window1.NewWindow
    Windows.Arrange xlArrangeStyleVertical
    With window2
        'jumps to column S
        .ScrollRow = 1
        .ScrollColumn = 19
    End With
    With window1
        'jumps to column Z
        .ScrollRow = 1
        .ScrollColumn = 26
        'freezes the first two rows
        .SplitRow = 2
        .SplitColumn = 0
        .FreezePanes = True
    End With
End Sub
Sub ResetWindowA()
    With ActiveWindow
        'reset previous freeze, if any
        .FreezePanes = False
        .SplitRow = 0
        .SplitColumn = 0
    End With
End Sub
如果您想要隐藏您不使用的范围的代码,而不是简单地滚动到您想要工作的位置,我也制作了下一个片段来隐藏您正在使用的范围以外的所有范围。
ResetWindow当您使用完两个窗口并想要关闭并保存文档时,它也有自己的功能。
Sub MacroB()
    Dim window1 As Window
    Set window1 = ActiveWindow
    ResetWindowB
    Dim window2 As Window
    Set window2 = window1.NewWindow
    Windows.Arrange xlArrangeStyleVertical
    With window2
        .ScrollRow = 1
        .ScrollColumn = 1
        'Hide all but S1:Y17
        Columns("A:R").EntireColumn.Hidden = True
        Columns("Z:XFD").EntireColumn.Hidden = True
        Rows(18 & ":" & Rows.Count).EntireRow.Hidden = True
    End With
    With window1
        .ScrollRow = 1
        .ScrollColumn = 1
        'Hide all columns before Z
        Columns("A:Y").EntireColumn.Hidden = True
        'freezes the first two rows
        .SplitRow = 2
        .SplitColumn = 0
        .FreezePanes = True
    End With
End Sub
Sub ResetWindowB()
    'unhide rows
    If Columns("XFD").EntireColumn.Hidden = True Then
        Columns("A:R").EntireColumn.Hidden = False
        Columns("Z:XFD").EntireColumn.Hidden = False
        Rows(18 & ":" & Rows.Count).EntireRow.Hidden = False
    Else
        Columns("A:Y").EntireColumn.Hidden = False
    End If
    With ActiveWindow
        'reset previous freeze, if any
        .FreezePanes = False
        .SplitRow = 0
        .SplitColumn = 0
        .ScrollRow = 1
        .ScrollColumn = 1
    End With
End Sub