用VBA隐藏空行 - 提高速度

时间:2018-03-09 01:33:10

标签: vba hide rows

我正在尝试隐藏单元格文本长度等于零的行。 目前使用以下代码,但由于逐行浏览每一行,因此速度极慢:

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

但是因为我的细胞不是空白,只是给你一个公式的结果,我不认为这对我有用。

还有其他方法可以提高此流程的效率吗?

1 个答案:

答案 0 :(得分: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