Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 Application.OnTime。我觉得用这个是个坏主意。。。你是怎么想的?_Excel_Timer_Scheduling_Vba - Fatal编程技术网

Excel VBA Application.OnTime。我觉得用这个是个坏主意。。。你是怎么想的?

Excel VBA Application.OnTime。我觉得用这个是个坏主意。。。你是怎么想的?,excel,timer,scheduling,vba,Excel,Timer,Scheduling,Vba,我支持许多用户,他们要求事情自动发生(当然更自动,但这是另一点!) 一个希望事件每120秒发生一次(见我的另一个问题),另一个希望在每个工作日下午5点发生一件事。这必须在Excel工作表上,因此VBA作为加载项等是不允许的,因为它需要是自包含的 我非常不喜欢使用应用程序。我认为它很危险而且不可靠,其他人怎么看 编辑: 交叉柱位于绝对100%可靠,绝对不危险。但是,它仅通过VBA公开,并且出于某种原因,您在此处将VBA视为“否”,因此您似乎无法使用此选项 我通常不会将OnTime用于长期调度,例

我支持许多用户,他们要求事情自动发生(当然更自动,但这是另一点!)

一个希望事件每120秒发生一次(见我的另一个问题),另一个希望在每个工作日下午5点发生一件事。这必须在Excel工作表上,因此VBA作为加载项等是不允许的,因为它需要是自包含的

我非常不喜欢使用
应用程序。我认为它很危险而且不可靠,其他人怎么看


编辑: 交叉柱位于

绝对100%可靠,绝对不危险。但是,它仅通过VBA公开,并且出于某种原因,您在此处将VBA视为“否”,因此您似乎无法使用此选项

我通常不会将OnTime用于长期调度,例如调度Excel在每天下午5点执行命令。问题是,如果用户关闭Excel,则会丢失实时调度。在这种情况下,您需要使用或创建自己的应用程序或windows服务来打开Excel并执行命令

但是,要将事件安排为每120秒发生一次,使用Application.OnTime将是最好的选择--您只需重新安排OnTime,以便在每次OnTime回调时在120秒内再次发生,因为OnTime在每次安排时只触发一次,而不是重复。我绝对会使用VBA来完成这项任务。如果您不想让VBA开始操作,那很好:只需将VBA包含在工作簿中,然后由您的程序或通过任务计划程序打开即可。从那时起,VBA代码可以每120秒触发一次

有意义吗?

你说得对。“onTime”调用自身的“无限”间隔会创建无限递归

它会在几千次/百万次/十亿次函数调用后导致堆栈溢出,并且会“泄漏”内存。

对自身的“实时调用”不是在创建无限递归吗?在几千次/百万次/十亿次函数调用后不会导致堆栈溢出吗?