我想知道我是否可以冻结某些细胞,例如L1:P20? 我一直在寻找,似乎找不到任何解决方案。 这里有人可以帮帮我吗?
例如,当我点击命令按钮时。当我向下滚动时,我怎么能在右边冻结整个东西。当我向下滚动时,我希望桌子也跟着我。
答案 0 :(得分:0)
尝试以下操作冻结直接指向您的指定列,并围绕隐藏/取消隐藏列以及行> 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
最后,但并非最不重要的是,您可以使用UserForm将此答案与我的第二个答案结合起来。
答案 1 :(得分:0)
<强>替代强>
作为替代方法,您可以创建UserForm并利用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步
使用以下所需控件创建UserForm: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
备注:这只是一个简单的示例,如果您了解有关UserForms的更多信息,可以进行优化。