Скриване на празни редове с 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