目前我正在处理一个显示大约的 Excel/VBA 工作簿。预算中有 500 个项目,每个项目位于不同的行。我希望用户在预算中选择详细程度:在最高级别将显示每个单独的项目,在较低的详细级别将几个项目分组在一个标题下。
下面概述的方法(逐行隐藏/取消隐藏)非常慢:隐藏/取消隐藏大部分项目大约需要 4 分钟。我希望你对我如何加快程序有任何提示!
通过对话框选择详细程度时,程序将执行以下步骤:
1) 更新画面被关闭:
Application.ScreenUpdating = False
Application.EnableEvents = False
2) 预算中的每个行项目确定该行是否应该隐藏。我为此使用的代码如下:
with sheets("[name sheet here]")
.Range("[identifier of budget line item here]").EntireRow.Hidden = False / True
...
[500 times]
...
end with
3) 其次,根据详细程度,将对应于子标题的文本设为白色或黑色。这是为大约 20 行完成的:
With Sheets("[name sheet here]").Range("[identifier of budget line item here]").Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
End With
4) 最后,再次根据详细程度,再次绘制一些线条,这些线条在隐藏某些行时变得不可见。对于各种范围,此操作执行 10 次左右:
Range("[range here]").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With