【发布时间】:2019-04-06 21:04:09
【问题描述】:
我有工作代码可以根据相应的单元格值隐藏/取消隐藏行。
这是一个材料清单,有一个“完成”按钮。您按下按钮,应隐藏数量 = 0 的任何行。
有 400 多行,我可以看到这些行消失了。它每秒处理大约 20 行,这使得完成列表需要超过 20 秒。该列表每隔几个月就会翻一番。
还有其他方法可以更快地隐藏线条吗?
隐藏:
Public Sub HideRows()
Dim cell As Range
For Each cell In ActiveSheet.Range("H18:H469")
cell.EntireRow.Hidden = (cell.Value = 0 And cell.Value <> "")
Next cell
End Sub
取消隐藏:
Public Sub UnhideRows()
Dim cell As Range
For Each cell In ActiveSheet.Range("H18:H469")
If (cell.Value = 0 And cell.Value <> "") Then cell.EntireRow.Hidden = False
Next cell
End Sub
【问题讨论】:
-
在代码
Application.ScreenUpdating = False的开头关闭屏幕更新。如果在代码末尾重新打开,请务必打开 -
在这种情况下,我们建议您构建要隐藏的单元格范围,然后一次性隐藏该范围
-
为什么要双重测试? cell.Value = 0 和 cell.Value "" 而不仅仅是 =0 ?
-
但是我也不明白你使用的这种逻辑
cell.Value = 0 And cell.Value <> ""这不可能是真的,所以我不确定我是否理解目的。也许你的意思是Or?