在某个范围内查找特定值然后隐藏其下方的所有行 vba

在某个范围内查找特定值然后隐藏其下方的所有行 vba

我有一张表格,标题从单元格 B4 开始到 N4。单元格 B4 表示小时,其下方 - 从单元格 B5 到 B28 - 表示从凌晨 1 点到晚上 12 点的小时。根据单元格 AF2 的值,该单元格值下方的所有行都将被隐藏。例如,单元格 AF2 表示下午 4 点。下午 5 点到晚上 12 点将被隐藏。凌晨 1 点到下午 4 点将保持可见。请帮忙

Sub HideRows()

Dim Cell As Range
Dim time1 As String

time1 = Range("AF2").Value
Columns("B:B").Select
Set Cell = Selection.Find(What:=time1, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)

If Cell Is Nothing Then
    'do it something


Else
    Cell.Select
    ActiveCell.Offset(1).Select
    ActiveCell.EntireRow.Select
   'Selection.EntireRow.Hidden = True
End If

End Sub

`

答案1

首先,你确实想要避免使用选择在你的代码中。

Sub HideRows()

Dim Cell As Range
Dim time1 As String

time1 = Range("AF2").Value
Set Cell = Columns("B:B").Find(What:=time1, LookIn:=xlFormulas, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)

If Not Cell Is Nothing Then
    Rows(Cell.Row & ":" & Range("B" & Rows.Count).End(xlUp).Row).Hidden = True
End If

End Sub

附注:您可能还希望使用它们所在的工作表来限定所有范围。例如Worksheets("Sheet1").Range("AF2").ValueSet Cell = Worksheets("Sheet1").Columns("B:B").Find(...等等

相关内容