根据单元格值隐藏行

时间:2016-01-21 21:28:25

标签: excel vba excel-vba

我有一个项目和数量表,我想在数量为0时隐藏行。宏工作,但完成时间太长。

这是代码:

void entry::entry_operate() { /* ... */ }

如果X列中的值为0,是否有更有效的方法来获得相同的结果,隐藏行414-475?

1 个答案:

答案 0 :(得分:3)

更快地制作任何代码(对工作簿进行任何更改)的常用方法是禁用screen updating并停用events并将calculation模式更改为Manual (还有其他方法,但这三件事最重要)。

另一件事是收集一个联合范围内的所有行在删除和插入行时有一个很大的因素,因为删除一行所需的时间与删除整个联合范围的时间相似。例如,如果删除一行需要1秒,则删除1000行将需要1000秒,但删除包含1000行的联合范围只需要1秒。

试试这段代码:

Sub Hide2ndFix()
'
' Hide2ndFix Macro
'
Dim RowCnt As Long, uRng As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

BeginRow = 414
EndRow = 475
ChkCol = 24

    For RowCnt = BeginRow To EndRow
        If Cells(RowCnt, ChkCol).Value = 0 Then
         If uRng Is Nothing Then
          Set uRng = Cells(RowCnt, ChkCol)
         Else
          Set uRng = Union(uRng, Cells(RowCnt, ChkCol))
         End If

        End If
    Next RowCnt
'
 If Not uRng Is Nothing Then uRng.EntireRow.Hidden = True

Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic

End Sub