我希望冻结范围S1:Y17
,隐藏列A:R
,然后从Z列开始我只想冻结前2行。
这可能吗?
答案 0 :(得分:4)
使用任何色带下的任何选项都无法实现此目的。
或者,您可以将冻结点设置为Z18,特别是因为列A:R被隐藏或使用视图>新窗口然后排列全部。
答案 1 :(得分:4)
Range("A1").Select
With ActiveWindow
.SplitColumn = 1
.SplitRow = 1
.FreezePanes = True
End With
您可以使用拆分列和行。
答案 2 :(得分:1)
确保只选择一个单元格Z3,然后在“窗口”菜单上单击冻结窗格
在VBA中,试试这个:
Range("Z3").select
ActiveWindow.FreezePanes = True
答案 3 :(得分:1)
在旧版本的excel中可以实现这一点。您可以选择任何单元格,转到Windows选项卡和冻结窗格。该单元格左侧和上方的所有内容都被冻结。但微软似乎决定在每个新版本的Office中删除更多功能。每个人都知道和喜爱的旧功能较少。很快,你不妨使用Works或Open Office。我希望我可以切换到Word Perfect,但有太多公司正在使用MS Office。
答案 4 :(得分:0)
我知道这个问题很旧,但是我经常访问它,以至于我想添加@ daniellopez46的答案的VBA版本。该代码将:
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