2017-02-28 203 views
1

我需要在Excel 2016 VBA编辑器中创建一个计时器,该编辑器每秒钟都会关闭并显示一条消息。如何使用Excel 2016 VBA宏编辑器创建自动计时器?

我有一个简单的代码,将做到这一点;但是,当我运行代码时会出现一个消息框,然后出现错误。我的代码是介绍如下:

Private Sub Workbook_Open() 
RunEveryTwoMinutes 
End Sub 

Sub RunEveryTwoMinutes() 
MsgBox ("Stop!") 
Application.OnTime Now + TimeValue("00:00:01"), "RunEveryTwoMinutes" 
End Sub 

我收到状态错误: “无法运行宏。‘C:用户|通用\ Book1.xlsm’宏可能无法在此工作簿或提供所有可能的宏被禁用。

我不知道正在发生的事情。我只是需要找到一种方法来创建,一旦代码初始化启动一秒的计时器。

回答

1

将此代码工作簿的代码模块中:

Private Sub Workbook_Open() 
RunEveryTwoMinutes 
End Sub 

,并把这个代码在一个标准的代码模块:

Sub RunEveryTwoMinutes() 
MsgBox ("Stop!") 
Application.OnTime Now + TimeValue("00:00:01"), "RunEveryTwoMinutes" 
End Sub 

或者,你可以有你的工作簿的代码模块中的所有代码,但你需要限定宏名称:

Private Sub Workbook_Open() 
RunEveryTwoMinutes 
End Sub 

Sub RunEveryTwoMinutes() 
MsgBox ("Stop!") 
Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.RunEveryTwoMinutes" 
End Sub 

我相信第一种方法更可取。

+0

不错的答案,但为什么你更喜欢功能是在一个标准的模块? –

+0

@ASH - IMO如果ThisWorkbook模块中的函数只是特定于工作簿,并且窗体中的函数只针对表单,并且工作表中的函数只针对工作表以及函数在类中是特定于类的,其他所有内容都被放入通用模块中。 – YowE3K

+0

这是一个很好的观点。标准模块也易于导出,因此可以重复使用。荣誉:) –