我正在寻找隐藏所有行(直到第150行)的所有行,这些行在特定列中包含特定文本。该列包含两个选项的下拉列表:“是”和“否”。如果答案是肯定的,我想隐藏下面的所有行,如果不是,那么不要隐藏。 即,C2为“否”,请不要隐藏。 C3是“是”,隐藏...有150行“是”或“否”,但是一旦是,就可以隐藏所有行。
我尝试循环下面的代码,并且该代码可用于第一个单元格,但之后的所有行均不起作用
Option Explicit
Private Sub HideRows(ByVal Target As Range)
If Range("C2").Value = "Yes - provide details" Then
Rows("3:150").EntireRow.Hidden = True
ElseIf Range("C2").Value = "No" Then
Rows("3:150").EntireRow.Hidden = False
End If
If Range("C3").Value = "Yes - provide details" Then
Rows("4:150").EntireRow.Hidden = True
ElseIf Range("C3").Value = "No" Then
Rows("4:150").EntireRow.Hidden = False
End If
' all the way through to C149
If Range("C149").Value = "Yes - provide details" Then
Rows("150").EntireRow.Hidden = True
ElseIf Range("C149").Value = "No" Then
Rows("150").EntireRow.Hidden = False
End If
End Sub
我希望能够循环显示第一个If代码,但是在第一个If代码之后无法使用
答案 0 :(得分:1)
(未经测试)
Rows("3:150").EntireRow.Hidden = False
For i = 2 to 150
If Range("C" & i).Value = "Yes - provide details" Then
Rows(i + 1 & ":150").EntireRow.Hidden = True
Exit For
End If
Next i
答案 1 :(得分:0)
由于您似乎不想进行过滤,因为您希望隐藏“是”下的所有行。我建议做一个循环。
Option Explicit
Sub HideRows()
Dim currRow as Integer: currRow = 1
Dim continue as Boolean: continue = True
While continue
If cells(currRow,3) = "Yes - provide details" then
rows(currRow & ":150").EntireRow.Hidden = true
continue = False
Else
currRow = currRow + 1
End If
Wend
End Sub
未经手机测试。