Скрытие пустых строк с VBA — увеличение скорости

Я пытаюсь скрыть строки, в которых длина текста ячейки равна нулю. В настоящее время используется следующий код, но он очень медленный из-за разбиения каждой строки по частям:

Sub HideRows()
Application.ScreenUpdating = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Application.DisplayAlerts = False

Dim cell As Range
For Each cell In Range("B1:B1000")
    If Not IsEmpty(cell) Then
        If Len(cell.Text) = 0 Then
            cell.EntireRow.Hidden = True
        End If
    End If
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub

Я видел другие места, которые вы можете использовать

Rng.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Но поскольку мои ячейки не пусты, а просто дают вам результат "" из формулы, я не вижу, чтобы это работало для меня.

Есть ли другой способ сделать этот процесс более эффективным?


person Alex Keyes    schedule 09.03.2018    source источник


Ответы (1)


Вы можете скрыть все строки одним действием:

Sub hideRows()
Dim rng As Range
For Each cell In Range("B1:B1000")
    If Len(cell.Text) = 0 Then
        If rng Is Nothing Then
            Set rng = cell
        Else
            Set rng = Union(rng, cell)
        End If
    End If
Next
rng.EntireRow.Hidden = True
End Sub
person Tehscript    schedule 09.03.2018