小编Ric*_*ers的帖子

在Excel VBA中有效隐藏/取消隐藏许多(+500)行

目前我正在开发一个显示大约的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)

excel performance vba excel-vba

1
推荐指数
1
解决办法
9856
查看次数

标签 统计

excel ×1

excel-vba ×1

performance ×1

vba ×1