隐藏包含某些文本的单元格下面的所有行

时间:2019-07-22 17:01:27

标签: excel vba

我正在寻找隐藏所有行(直到第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代码之后无法使用

2 个答案:

答案 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

未经手机测试。