VBA - Как скрыть строки на основе определенных критериев? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь скрыть все строки, если значение столбца B имеет значение «x». Это то, что я до сих пор:

Public Sub HideRowsOOS()

    Application.ScreenUpdating = False

    With ActiveSheet
    For Each cell In Range("B2:B")
        If cell.Value = "x" Then
            cell.EntireRow.Hidden = True
        End If
    Next cell

    Application.ScreenUpdating = True
End Sub

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Я предложу эту оптимизированную процедуру:

Option Explicit

Public Sub HideRowsOOS()

    Application.ScreenUpdating = False

    With Worksheets("mySheet") 'change as neeeded

        Dim lastRow as Long
        lastRow = .Cells(.Rows.Count,2).End(xlUp).Row

        For Each cell In .Range("B2:B" & lastRow)

            If cell.Value = "x" Then 

                Dim collect as Range
                If collect Is Nothing Set collect = cell: Else Set collect = Union(collect, cell)

            End If

        Next cell

    End With

    collect.EntireRow.Hidden = True

End Sub
0 голосов
/ 30 апреля 2020

Заменить:

Range("B2:B")

на:

Intersect(Range("B:B"),ActiveSheet.UsedRange)

(вы также можете удалить оператор With)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...