Excel VBA代码优化

2025-03-12 22:35:09
推荐回答(4个)
回答1:

代码和你的说明有出入
Range("a14:a41").EntireRow.Hidden = False

是你说的意思,先选择A14:A41行的单元格取消隐藏

For i = 3 To Range("a50").End(xlUp).Row
If Cells(i, 1) = "隐" Then Rows(i).EntireRow.Hidden = True
Next
不对,是从第3行开始到,距离50行最近的一个有数据的行,然后判断是否应该隐藏。

如果你只想14到50的话,参看下面
For i = 14 To 50
If Cells(i, 1) = "隐" Then Rows(i).EntireRow.Hidden = True
Next

还有为什么不用自动筛选,只是要把固定的隐藏的话,筛选的不是更方便些

回答2:

是因为公式太复杂导致的,执行前关闭自动计算.

Private Sub CommandButton4_Click()

Application.Calculation = -4135
Application.ScreenUpdating = 0

For i = 14 To 50
Rows(i).Hidden = Cells(i, 1) = "隐"
Next

Application.Calculation = -4105
Application.ScreenUpdating = 1

End Sub

回答3:

你的代码没有什么问题,我测试了一下挺快的,瞬间完成。即使有公式也不影响运行速度,看看是不是你的excel内存的问题。或者关闭一下其他程序。

回答4:

只取消A14:A41行的单元格吗?其他地方还有隐藏的吗?