我想冻结范围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