我想知道是否可以冻结某些单元格,比如从L1:P20? 我一直在寻找,似乎无法找到任何解决方案。 这里的任何人都可以帮助我吗?冻结excel中的某些单元格
例如当我点击命令按钮。当我滚动时,我怎么能够在右边冻结整个事物。当我向下滚动时,我希望桌子也跟着我。
我想知道是否可以冻结某些单元格,比如从L1:P20? 我一直在寻找,似乎无法找到任何解决方案。 这里的任何人都可以帮助我吗?冻结excel中的某些单元格
例如当我点击命令按钮。当我滚动时,我怎么能够在右边冻结整个事物。当我向下滚动时,我希望桌子也跟着我。
请尝试以下方法冻结到您指定的列和玩隐藏/取消隐藏周围以及行> 20列:
Dim ws As WorkSheet
Set ws = ThisWorkBook.WorkSheets("MySheetName") ' <-- Change to your sheet name
ws.Range("Q2").Select
ActiveWindow.FreezePanes = True
然后,你可以隐藏所有行的右方和下方例如行20:
Columns("Q:Q").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.EntireColumn.Hidden = True
Rows("21:21").Select
Range("C21").Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
最后,但并非最不重要的,你可以这个答案与使用用户窗体我的第二个结合。
如果user7334325不知道这是否有可能,并且认为可能需要VBA解决方案:这也是常见的“冻结窗格”功能,也可以从功能区中获得:)不要从您的答案中拿走任何价值, @TM值 –
@ T.M。有用。但只适用于从左到右的滚动。为什么当我向下滚动时它不会跟着我? – user7334325
@ user7334325:也许你在第1行选择了一个单元格?您指定的单元格之前的所有行和列都将冻结,例如C2将冻结第1行和第A和B列。您可以在功能区中的“View \ Window \ Freeze窗格”中试用这个权限。 –
替代
正如你可以创建一个用户窗体,并采取Worksheet_SelectionChange方法的优点一个选择 - 只要你选择了某一行,你会看到在一个窗体的单独列表框的整个范围。作为剩余的活动行会被标记,如果你定位行内1至20:
步骤1
写代码到您的表模块(MySheetName)
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:P20")) Is Nothing Then
' Mark active row in list box
If Not UserForm1.ListBox1 Is Nothing Then
If Target.Row < UserForm1.ListBox1.ListCount Then
UserForm1.ListBox1.ListIndex = Target.Row
End If
End If
' Show user form
UserForm1.Show vbModeless
End If
End Sub
步骤2
使用以下所需的控件创建一个用户窗体:ListBox1和CommandButton1 。然后用F7这个代码写入到新创建的UserForm1模块
Option Explicit
Private Sub CommandButton1_Click()
Me.Hide
End Sub
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("MySheetName")
Dim s As String ' range address string
Dim rng As Range ' (target) range
' set range to L1:P20
s = "L1:P20"
Set rng = ws.Range(s)
' define row source of list box via set range
Me.ListBox1.RowSource = s
End Sub
Private Sub UserForm_Layout()
Me.Caption = "My frozen Range L1:P20"
' Userform position in the top right corner
Me.StartUpPosition = 0
Me.Top = 0 ' or: Me.Top = Application.Top + ...
Me.Left = Application.Left + Application.Width - Me.Width
With Me.ListBox1
.ColumnCount = 5 ' five Columns L:P
.ColumnHeads = True
.ColumnWidths = .Width/.ColumnCount
End With
End Sub
备注:这只是一个简单的例子,它如果你了解用户窗体,你可以细化。
“冻结”是什么意思?你想保护他们免于改变? – AntiDrondert
@AntiDrondert不,我希望细胞在我向下滚动时“跟随我”。 – user7334325
@ user7334325添加了一个替代答案,显示右上角的UserForm。 –