3

我想冻结范围S1:Y17,隐藏列A:R,从 Z 列开始,我只想冻结前 2 行。

那可能吗?

4

5 回答 5

4

无法使用任何功能区下的任何选项来完成此操作。

或者,您可以将冻结点设置在 Z18,特别是因为 A:R 列被隐藏或使用查看>新窗口,然后全部排列。

于 2013-04-30T15:57:44.913 回答
4
Range("A1").Select

With ActiveWindow
    .SplitColumn = 1
    .SplitRow = 1
    .FreezePanes = True
End With

您可以使用拆分列和行。

于 2016-01-01T18:23:55.903 回答
2

确保只需选择一个单元格 Z3,然后在“窗口”菜单上单击“冻结窗格”

在 VBA 中,试试这个:

Range("Z3").select
ActiveWindow.FreezePanes = True
于 2013-04-30T14:53:30.160 回答
1

这在旧版本的 excel 中是可能的。您可以选择任何单元格,转到窗口选项卡和冻结窗格。那个牢房左边和上面的一切都被冻结了。但微软似乎决心在每个新版本的 Office 中删除更多功能。每个都少了我们知道和喜爱的旧功能。很快,您不妨使用 Works 或 Open Office。我希望我可以切换到 Word Perfect,但有太多公司在使用 MS Office。

于 2015-01-21T19:05:02.880 回答
0

我知道这个问题很老,但我经常访问它,以至于我想我会添加一个 VBA 版本的@daniellopez46 的答案。此代码将:

  1. 创建电子表格的第二个窗口
  2. 垂直平铺窗户(并排)
  3. S在一个窗口上显示从列开始的范围
  4. 滚动到Z第二个窗口上的列
  5. 冻结第二个窗口的前 2 行

完成电子表格的工作并关闭其中一个窗口后,您可能不想保留已完成的格式,因此我包含了一个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
于 2018-07-17T17:26:36.640 回答