【问题标题】:Time execution VBA SUB-SUB with IRibbonControl使用 IRibbonControl 的时间执行 VBA SUB-SUB
【发布时间】:2020-08-25 11:20:14
【问题描述】:

我在执行我的子时遇到了时间问题。 例如下面的代码。如果我从 VBA 编辑器执行它需要 4 秒,但如果我使用功能区中的自定义按钮调用它:Public Sub test_sub(control as IRibbonControl) 需要 66 秒。我不明白为什么..

'SUB executed from VBA editor:

Public Sub test_sub()

Dim i As Integer

Dim t As Double

t = Timer

For i = 0 To 20

    Call generar_resumen

Next i

Debug.Print " tiempo sub = " & Timer - t

End Sub


'SUB executed from button in Excel Ribbon:

Public Sub test_sub(control as IRibbonControl)

Dim i As Integer

Dim t As Double

t = Timer

For i = 0 To 20

    Call generar_resumen

Next i

Debug.Print " tiempo sub = " & Timer - t

End Sub

拜托,有人可以帮助我吗?我不知道该怎么办。

谢谢

【问题讨论】:

  • generar_resumen 在做什么的任何信息?也许这是codereview.stackexchange.com的问题
  • 子将单元格从一个 Excel 工作表复制到一个新工作表。我做了一些控件,如果你只删除“控件作为 IRibbonControl”,你会加快子的执行速度
  • 我投票结束这个问题,因为这个问题属于codereview.stackexchange.com
  • @Storax 虽然这可能是未来 CR 的主题,但请不要以 Code Review 站点的存在作为关闭问题的理由。评估请求并使用需要关注、主要基于意见等原因。然后您可以向 OP 提及它可以在 Code Review 上发布(如果是) on-topic。请看Does being on-topic at another Stack Exchange site automatically make a question off-topic for Stack Overflow?
  • 感谢您的提示,我仍然认为它属于 CR 并且应该在此处关闭,因为根据 OP,只有当他从功能区调用它并且他已经应用了通常的技巧时,代码才会很慢关闭事件,计算等。正如链接中提到的,我没有自动 VTC。但是,当然,您可以有不同的意见。

标签: excel vba ribbon


【解决方案1】:

也许你可以尝试在开始时使用它:

 On Error GoTo Err_Exit:
 Application.EnableEvents = false
 Application.ScreenUpdating = false

最后你可以再次使用它来启用它

 Err_Exit:
 Application.EnableEvents = true
 Application.ScreenUpdating = true

【讨论】:

  • 在子“generar_resumen”中我已经考虑过: With Application .EnableEvents = False .ScreenUpdating = False .Calculation = xlCalculationManual .DisplayAlerts = False End 在这两种情况下,一切都是一样的.两个潜艇之间的唯一变化是它们是否通过按钮调用谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2011-12-04
  • 1970-01-01
  • 2015-01-23
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多