vba 隐藏一些行,向下滚动时冻结一些行

问题描述 投票:0回答:1

我在工作表顶部有操作按钮,如果用户单击其中一个操作按钮,该按钮将返回第 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

请帮忙。我真的不知道如何激活滚动、隐藏行和冻结某些窗格。

excel vba show-hide vertical-scrolling
1个回答
0
投票

因此,我添加了另一个操作按钮,该按钮将用户带到不同的工作表以查看数据并返回到签署页面。这解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.