Vba 刷新公式的连续循环
我有一个工作表,它使用=Files作为命名范围(这样我可以看到文件夹中的文件。然后我有一个移动按钮,可以将文件从一个文件夹移动到另一个文件夹)。 当我点击命令按钮时,我已经告诉它执行移动和Vba 刷新公式的连续循环,vba,function,excel,loops,Vba,Function,Excel,Loops,我有一个工作表,它使用=Files作为命名范围(这样我可以看到文件夹中的文件。然后我有一个移动按钮,可以将文件从一个文件夹移动到另一个文件夹)。 当我点击命令按钮时,我已经告诉它执行移动和 ActiveSheet.EnableCalculation = False ActiveSheet.EnableCalculation = True 这真是太棒了。 唯一的问题是,只有当我单击“移动”按钮时,才会更新我的文件列表 是否有任何方法使此功能始终工作? 不点击按钮。。。。。 因此,只要文件处于打开
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
这真是太棒了。
唯一的问题是,只有当我单击“移动”按钮时,才会更新我的文件列表
是否有任何方法使此功能始终工作?
不点击按钮。。。。。
因此,只要文件处于打开状态,它就会始终执行刷新
理想情况下,我可以告诉它每X秒做一次……但这不是必须的。基于您在机器上只使用此工作簿,而不做任何事情的事实,您可以将代码放入工作簿的
工作簿打开事件中(VBE中的此工作簿模块)并用Do循环
环绕它,如下所示
Private Sub Workbook_Open()
Do
'code to move files
Application.Wait Now + TimeValue("0:05:00")) 'waits 5 minutes
Loop Until Time() >= TimeValue("17:00:00") '5pm military time
ThisWorkbook.Close True 'closes workbook after loop is over
End Sub
打开工作簿时,此代码将执行,基本上一直持续到一天中定义的时间段,然后关闭工作簿,每x分钟暂停一次循环(由Application.Wait设置)
替代方法
或者,正如Tim Williams所建议的,您可以将循环与Application.OnTime
命令一起使用,如下所示
Private Sub Workbook_Open()
Dim t as Date
t = Now + TimeValue("00:00:05") 'just give a 5 seconds to start loop
Do
Application.OnTime t, "mySub" 'where mySub is your sub name
t = Now + TimeValue("00:05:00") 'sets t to 5 minutes from now
Loop Until t > = TimeValue("17:00:00")
ThisWorkbook.Close True
End Sub
如果您让代码在打开的工作簿中无休止地运行,您将在一天中使用Excel时受到严重阻碍。但是,您可以创建一个vbscript
,在单独的Excel实例中打开工作簿并运行代码,然后关闭工作簿。然后使用任务计划程序安排vbscript每X秒运行一次ds。情况是,该文件位于一台计算机上,该计算机整天只运行excel文件。绝对没有其他功能。因为我需要整天打开excel文件。这样可以吗?您可以使用Application.OnTime()
定期更新。您不必关闭计算再重新打开Excel计算,只需使用应用程序即可。计算
。请根据您上次的评论查看我的答案。