Excel VBA:在上下文菜单中添加/删除许多命令非常慢,尤其是在大型工作表上-此是否可修复?

问题描述 投票:0回答:1

最近,我注意到上下文菜单的创建(根据您所使用的电子表格的不同,添加了许多不同的宏按钮,等等。)>

出于测试目的,我在工作簿对象的vba中具有以下测试宏:

Private Sub App_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    Dim OnActionString As String
    Dim cmdNew As CommandBarButton

    For Each icbc In Application.CommandBars("cell").Controls
        If icbc.Tag = "brccm" Then icbc.Delete
    Next icbc

    For i = 1 To 70
        Set cmdNew = Application.CommandBars("cell").Controls.Add
        With cmdNew
            .Caption = "RecordedOrNot"
            .OnAction = "UTILITY_RecordedOrNot"
            .BeginGroup = False
            .Tag = "brccm"
        End With
    Next

End Sub

即使在空白工作表上,它也会使右键单击上下文菜单显示大约2秒钟。我有一个很大的工作表,上面有大约80,000行,上面有很多数据,并且需要7秒才能出现在该工作表上。

这看起来应该是非常快的代码-有人知道为什么它很慢或知道加快它的方法,或者为什么在大型工作表上它比较慢?在执行此操作时是否可以禁用Application。*中的某些功能?

现在将尝试任何操作,因为这链接到我部门的关键工具集。

最近,我注意到上下文菜单的创建(根据您所使用的电子表格的不同,添加了许多不同的宏按钮等),它的运行速度越来越慢。为了测试目的,我有以下内容...

excel vba contextmenu
1个回答
0
投票

一个选项可能是在打开工作簿时预加载所有控件...,然后根据显示逻辑使控件可见(或不可见)。我在Range(“ A1:Z80000”)中具有随机数据的工作表上进行的测试表明,与实时添加和删除控件相比,这大约需要三分之一的时间执行(显示/隐藏控件的时间约为1.4秒,删除/显示控件的时间约为4.5秒在我的PC上添加)。

© www.soinside.com 2019 - 2024. All rights reserved.