Search code examples
vbaexcelmultiple-columnscells

VBA- Hide rows based on whether cell contains specific text


Looking to scan through a whole column to see if the product (in individual cell) may be discontinued. This is true if the word discontinued is in a cell. I want the whole row to be hidden if it is discontinued. Any suggestions?

Sub HideRows()
    Dim c As Range
    For Each c In Range("B3:B2452")
        If InStr(1, c, "Discontinued") Or InStr(1, c, "discontinued") Then
            c.EntireRow.Hidden = True
        End If
        Next
End Sub

Solution

  • Sub HideRows()
    
        Dim rCheck As Range
        Dim rHide As Range
        Dim rCheckCell As Range
    
        Set rCheck = ActiveWorkbook.ActiveSheet.Range("B3:B2452")
        rCheck.EntireRow.Hidden = False
    
        For Each rCheckCell In rCheck.Cells
            If InStr(1, rCheckCell, "Discontinued", vbTextCompare) > 0 Then
                If Not rHide Is Nothing Then Set rHide = Union(rHide, rCheckCell) Else Set rHide = rCheckCell
            End If
        Next rCheckCell
    
        If Not rHide Is Nothing Then rHide.EntireRow.Hidden = True
    
    End Sub