gpt4 book ai didi

vba - Application.ScreenUpdating 停止 VBA 中的宏执行

转载 作者:行者123 更新时间:2023-12-03 02:10:48 25 4
gpt4 key购买 nike

我不是经验丰富的 VBA 程序员,我需要社区来查找 Excel 的问题。

我的问题是,在 Excel 中,代码在以下行之后立即停止执行:Application.ScreenUpdating = True

我使用来自 msdn 网站的以下示例代码:

Dim elapsedTime(2) 
Application.ScreenUpdating = True
For i = 1 To 2
If i = 2 Then Application.ScreenUpdating = False
startTime = Time
Worksheets("Sheet1").Activate
For Each c In ActiveSheet.Columns
If c.Column Mod 2 = 0 Then
c.Hidden = True
End If
Next c
stopTime = Time
elapsedTime(i) = (stopTime - startTime) * 24 * 60 * 60
Next i
Application.ScreenUpdating = True
MsgBox "Elapsed time, screen updating on: " & elapsedTime(1) & _
" sec." & Chr(13) & _
"Elapsed time, screen updating off: " & elapsedTime(2) & _
" sec."

来源:http://msdn.microsoft.com/en-us/library/office/ff193498.aspx

但是,Msgbox 永远不会被执行,VBA 也不会显示任何错误 - 它只是默默地失败。

知道为什么会发生这种情况以及如何解决这个问题吗?

最佳答案

这不是一个答案;就像之前的海报一样,我无法让这个例程失败。

首先,我会说这是一段可怕的代码。我不明白为什么微软发布了这么糟糕的东西。例如:

  • 未输入 elapsedTime。 (应该是Dim elapsedTime(2) As Double)
  • i、startTime 和 stopTime 未定义。
  • 激活位于第一个循环的定时 block 内,因此,如果 Sheet1 在开始时不是事件工作表,则激活它的时间将添加到第一个循环的持续时间中。
  • 两个循环之间的列并未隐藏,因此第二个循环无关。如果您第二次运行该例程,则两个循环的持续时间相同。

Excel 中有一个错误,我很少遇到,而且已经好几年没有遇到过了。当我真的遇到它时,我花了很长时间才找到原因,以至于我落后于计划并且忘记记录细节以供下次使用。对于某些错误,Excel 不会停止并报告故障;相反,它终止当前函数并继续调用例程中的下一条语句。这个子程序是直接调用的,所以没有完成就停止了。

我唯一的建议是,您计算机上的 Sheet1 上的这段代码存在某些问题,从而导致了此错误。

您似乎认为 Application.ScreenUpdating = True 语句失败。这是可能的,但可能性不大。根据您的描述,您只知道该例程未到达 MsgBox 语句。

我怀疑c.Hidden = True。我看到一个问题询问隐藏列的最大数量,但没有人知道最大数量。一个答案是您无法隐藏合并区域的一部分,但我无法重复该错误。查看您的 Sheet1:是否隐藏了一些偶数列,但不是全部?取消隐藏列并重试。例程是否在一致列处失败?隐藏 1,024 列之类的内容后会失败吗?

祝您调查一切顺利。不过,我建议您放弃这段无效代码,并接受 Application.ScreenUpdating = False 将减少更新事件工作表的任何例程的运行时间。

关于vba - Application.ScreenUpdating 停止 VBA 中的宏执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13025805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com