我有一张表格,标题从单元格 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").Value
,Set Cell = Worksheets("Sheet1").Columns("B:B").Find(...
等等