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
如果运行时过长,Excel VBA将跳过代码行_Vba_Excel - Fatal编程技术网

如果运行时过长,Excel VBA将跳过代码行

如果运行时过长,Excel VBA将跳过代码行,vba,excel,Vba,Excel,我需要一个方法来跳过一行代码,如果它需要太长的时间来运行。这是一行,任何代码。例如,此行: managerAlias = recip.AddressEntry.GetExchangeUser.GetExchangeUserManager.Alias 如果数据可从outlook server获得,则需要0.2秒。但数据不可用,需要较长时间>30秒。我在“错误恢复下一步”中使用,但必须等待错误发生。因此,一般的问题是,如果一行代码的执行时间超过5秒,如何跳过该行?您可以在循环中设置该代码,以便在经

我需要一个方法来跳过一行代码,如果它需要太长的时间来运行。这是一行,任何代码。例如,此行:

managerAlias = recip.AddressEntry.GetExchangeUser.GetExchangeUserManager.Alias

如果数据可从outlook server获得,则需要0.2秒。但数据不可用,需要较长时间>30秒。我在“错误恢复下一步”中使用,但必须等待错误发生。因此,一般的问题是,如果一行代码的执行时间超过5秒,如何跳过该行?

您可以在循环中设置该代码,以便在经过特定时间后跳过该代码

没有测试,但是

myTime = now() + timevalue("00:00:03")
Do while managerAlias = null AND mytime < now()  
    managerAlias = recip.AddressEntry.GetExchangeUser.GetExchangeUserManager.Alias
loop
myTime=now()+timevalue(“00:00:03”)
当managerAlias=null和mytime
如果需要小于一秒的时间,请将时间值乘以小于1

(Timevalue(“00:00:01”)*0.2)

不幸的是,这在VBA中是不可能的。由于你的问题本质上是要求社区为你提供代码,而不是用你的代码解决一个特定的编码问题,因此我投票将其关闭,认为它离题/太宽泛(因为解释一个可行的解决方案需要一篇完整的博客文章)。不要关闭此对话框。以前有人问过它是否有其他代码行会阻止执行太长时间,而且不容易执行(如果可能的话)。我怀疑某个解决方案可能会将Application.EnableCancelKey=xlErrorHandler与Application.OnTime.等组合使用,但这并不能解决问题。问题是,调用别名functon 1次可能需要30秒,该函数才会抛出超时错误