目前我正在开发一个显示大约的Excel/VBA工作簿.预算中的500项,每项在不同的行上.我希望用户选择预算中的详细程度:在每个单独项目将显示的最高级别上,在较低级别的详细信息中,几个项目将分组在单个标题下.
下面概述的方法(隐藏/取消隐藏)是非常慢的:隐藏/取消隐藏大部分项目大约需要4分钟.我希望你有任何提示,如何加快程序!
通过对话框选择详细程度时,程序将执行以下步骤:
1)更新屏幕已设置:
Application.ScreenUpdating = False
Application.EnableEvents = False
Run Code Online (Sandbox Code Playgroud)
2)预算中的每个行项目确定是否应该隐藏该行.我正在使用的代码如下:
with sheets("[name sheet here]")
.Range("[identifier of budget line item here]").EntireRow.Hidden = False / True
...
[500 times]
...
end with
Run Code Online (Sandbox Code Playgroud)
3)其次,根据细节程度,对应于子标题的文本可以是白色或黑色.这大约需要20行:
With Sheets("[name sheet here]").Range("[identifier of budget line item here]").Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
End With
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)