连续循环刷新公式

时间:2015-10-28 18:50:15

标签: excel vba function excel-vba loops

我有一个工作表使用= Files作为命名范围(所以我可以看到文件夹中的文件。然后我有一个MOVE按钮,可以将文件从一个文件夹移动到另一个文件夹。 当我点击命令按钮时,我告诉它执行移动和

ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True

哪个效果太棒了。 唯一的事情是,当我点击移动按钮时,只会更新我的文件列表

是否有任何时候都能使用此功能? 没有点击按钮..... 因此,只要文件处于打开状态,它就会始终执行刷新。

理想情况下,我可以告诉它每隔X秒做一次......但这不是必需的。

1 个答案:

答案 0 :(得分:1)

根据您 其他 的机器 这一事实,您可以将代码置于您的workbook_open事件中工作簿(VBE中的ThisWorkbook模块)并用下面的Do Loop包围它。

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设置) )。

替代方法

或者,正如蒂姆·威廉姆斯建议的那样,您可以使用带有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