我在下面的宏中遇到了一个问题
Sub RefreshAction()
Range("b7").Select
Application.Run "RefreshCurrentSelection"
Application.OnTime (Now() + TimeValue("00:00:05")), "thisworkbook.Action"
End Sub
第一次运行宏时单元格刷新,但是在
之后立即收到错误消息消息:无法运行宏“C \ Desktop \ XYZ.xlsm'!thisworkbook.Action'。此工作簿中可能无法使用该宏,或者可能禁用所有宏。
我已经完成了“信任中心 - >信任中心设置 - >宏设置 - >启用所有宏,但它不起作用。
还单击“信任访问VBA项目对象模型”框。
答案 0 :(得分:4)
首先,我将解释当您尝试从工作表(而不是模块)运行OnTime时获得的错误的快照。我也得到了这个错误并试图找出原因。
它看起来像是一个安全错误,但在这种情况下,它并不是一个正常的安全错误。
要在计时器上运行代码,您必须将其添加到 VBA模块。 转到VisualBasic编辑器并右键单击VBAProject(书)。 在Excel中,它看起来如下所示:
由于您希望每5秒调用一次RefreshAction,您将执行以下操作:
Sub StartProcess()
Debug.Print Now()
Application.OnTime Now() + TimeValue("00:00:05"), "RefreshAction", Schedule = True
End Sub
Sub RefreshAction()
Application.EnableEvents = True
Debug.Print Now() + TimeValue("00:00:05")
Application.OnTime Now() + TimeValue("00:00:05"), "RefreshAction", Schedule = True
End Sub
我将允许您在RefreshAction子例程中添加您希望它每次执行的代码。
另外,我发现它非常脆弱。如果您在OnTime调用中有任何轻微错误,它将无声地失败。复制我的代码(我测试过它)并先尝试一下。运行后,只需将代码添加到RefreshAction子。
<强> StartProcess()强>
运行StartProcess开始运行。
另外奇怪的事
在我添加该模块之后,我仍然在工作表中使用了我的代码,然后我回去尝试运行它以再次看到错误,奇怪的是,一旦代码在模块中,您将无法获得工作表中的错误了。它现在可能正在引用模块中的代码。
答案 1 :(得分:1)
有关详细信息,请参阅绝对参考:CPearson OnTime
第一个问题,您需要存储您在 python manage.py makemigrations app
python manage.py migrate
方法中输入的时间才能停止它。 (这里我宣布 Public TimeToRun As Date )
第二点要连续使用OnTime
方法,您需要在定时程序结束时重置计时器(此处为OnTime
)。
所以你的整个代码应该是这样的:
RefreshAllStaticData