Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 由于大量对象隐藏/取消隐藏,代码运行缓慢_Performance_Excel_Button_Hide - Fatal编程技术网

Performance 由于大量对象隐藏/取消隐藏,代码运行缓慢

Performance 由于大量对象隐藏/取消隐藏,代码运行缓慢,performance,excel,button,hide,Performance,Excel,Button,Hide,我有一个大约20000行的电子表格。此电子表格是一个层次结构,用于显示设备部件的零件列表。我已经创建了一些代码,这些代码创建了按钮(实际上是形状矩形),允许用户通过隐藏/取消隐藏行来扩展/收缩这些组 我相信代码运行得很慢,因为电子表格上有几千个按钮,我相信每次隐藏行时都会刷新这些按钮。当我单击按钮时,代码运行,正确的行隐藏/取消隐藏,然后所有按钮消失几秒钟,然后重新出现。在隐藏或取消隐藏行之后发生消除,因此代码已经运行 有没有办法阻止Excel刷新每个按钮?还有其他问题吗?听起来您可以使用Exc

我有一个大约20000行的电子表格。此电子表格是一个层次结构,用于显示设备部件的零件列表。我已经创建了一些代码,这些代码创建了按钮(实际上是形状矩形),允许用户通过隐藏/取消隐藏行来扩展/收缩这些组

我相信代码运行得很慢,因为电子表格上有几千个按钮,我相信每次隐藏行时都会刷新这些按钮。当我单击按钮时,代码运行,正确的行隐藏/取消隐藏,然后所有按钮消失几秒钟,然后重新出现。在隐藏或取消隐藏行之后发生消除,因此代码已经运行


有没有办法阻止Excel刷新每个按钮?还有其他问题吗?

听起来您可以使用Excel中的透视表功能。我确信它比电子表格使用的宏/按钮快得多:

数据透视表大纲

您只需要努力将数据重新组织成一种合适的格式。祝你好运

如果你需要透视表的解释,你可以在谷歌上搜索“透视表教程”。

我使用了一种变通方法,当代码很方便时,我会详细说明,但如下所示:


  • 让“创建宏”按钮在单元格中创建超链接,而不是使用文本
    +/-
    和工具提示
    >>展开/收拢Ethanks进行响应。不幸的是,透视表在我的方案中不起作用。生成层次结构的原始列表将输入数据库程序。此层次结构只是一个简单的示例用于现场审查的可视化表示。最终用户对Excel几乎一无所知。我认为这比用按钮填充电子表格容易得多。您可以同样轻松地使用宏创建数据透视表。只需将标准化数据放入Excel中,即可创建数据透视表(您可以记录此操作以查看如何完成),调整是您希望它显示的方式,然后让他们随意单击加号和减号。实际上不需要任何excel知识。他们只需要知道如何使用鼠标。
    
    ActiveSheet.Hyperlinks.Add _
        Anchor:=[A1], Address:="", _
        SubAddress:=[A1].Address, _
        ScreenTip:=">>expand/collapse<<", _
        TextToDisplay:="+/-"
    
    if target.screentip = ">>expand/collapse<<" then 
        myShowHideMacro
    else
        'do other stuff
    end if