我在工作表顶部有操作按钮,如果用户单击其中一个操作按钮,该按钮将返回第 26 行及以下行中的数据。当用户在工作表上向下滚动时,我希望第 5 行到第 24 行隐藏,而第 1 行到第 26 行的其余行冻结/可见。当我向下滚动时,Excel 似乎无法重新识别。也许另一种选择是激活工作表的副本,其中不包含我最初隐藏的内容。因此,当用户滚动经过第 26 行时,该替代表将被激活
因此,当隐藏行时,我希望在列标题保持可见的情况下这样做:
我尝试了一些代码,但都不起作用。 尝试1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim visibleRange As Range
Set visibleRange = ActiveWindow.visibleRange.Rows(1).Resize(VisibleRowsCount)
If Not Intersect(Target, visibleRange) Is Nothing Then
If Target.row > 26 Then
Application.ScreenUpdating = False
ActiveWindow.FreezePanes = True
Rows("5:24").Hidden = True
Application.ScreenUpdating = True
Else
ActiveWindow.FreezePanes = False
Rows("5:24").Hidden = False
End If
End If
End Sub
Function VisibleRowsCount() As Long
VisibleRowsCount = ActiveWindow.visibleRange.Rows.Count
End Function
尝试2:
Private Sub Worksheet_WindowScroll(ByVal Sh As Object, ByVal Target As Excel.Range)
If Target.Cells(1, 1).row > 26 Then
ActiveWindow.FreezePanes = True
Rows("5:24").Hidden = True
Else
ActiveWindow.FreezePanes = False
Rows("5:24").Hidden = False
End If
Debug.Print Target.Cells(1, 1).row
End Sub
尝试3:
Private Sub Worksheet_Scroll(ByVal Target As Range)
If Target.Rows.Count > 0 Then
If Target.Cells(1, 1).row > 26 Then
Application.ScreenUpdating = False
ActiveWindow.FreezePanes = True
sO.Rows("5:24").Hidden = True
Application.ScreenUpdating = True
Else
ActiveWindow.FreezePanes = False
sO.Rows("5:24").Hidden = False
End If
End If
End Sub
尝试4:
Private Sub Worksheet_WindowScroll(ByVal Sh As Object, ByVal Target As Excel.Range)
If Target.Cells(1, 1).row > 26 Then
If Not frozenPanes Then
ActiveWindow.FreezePanes = True
frozenPanes = True
End If
Rows("5:24").Hidden = True
Else
If frozenPanes Then
ActiveWindow.FreezePanes = False
frozenPanes = False
End If
Rows("5:24").Hidden = False
End If
End Sub
请帮忙。我真的不知道如何激活滚动、隐藏行和冻结某些窗格。
因此,我添加了另一个操作按钮,该按钮将用户带到不同的工作表以查看数据并返回到签署页面。这解决了我的问题。