无法运行宏

fdt*_*243 2 excel ontime vba popup excel-vba

我在下面的宏中遇到了问题

Sub RefreshAction()
    Range("b7").Select
    Application.Run "RefreshCurrentSelection"
    Application.OnTime (Now() + TimeValue("00:00:05")), "thisworkbook.Action"
End Sub
Run Code Online (Sandbox Code Playgroud)

第一次运行宏时,单元格刷新,但之后立即收到错误消息

消息:无法运行宏“ C \ Desktop \ XYZ.xlsm'!thisworkbook.Action'。该宏可能在此工作簿中不可用,或者所有宏都可能被禁用。

我已经经历过“信任中心->信任中心设置->宏设置->启用所有宏,但是它不起作用。

还单击“对VBA项目对象模型的信任访问”框。

rad*_*vus 5

首先,这是当您尝试从工作表(而非模块)运行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
Run Code Online (Sandbox Code Playgroud)

我将让您每次都在RefreshAction子例程中添加您希望它执行的代码。

这是该模块中的外观。确保您显示的内容与图片中的内容一样在模块中: VBA中的模块

另外,我发现它非常脆弱。如果您在OnTime呼叫中甚至有任何错误,它将无声地失败。复制我的代码(我对其进行了测试),然后先尝试。一旦运行,只需将代码添加到RefreshAction子项即可。

StartProcess()

运行StartProcess开始事情。

另外的怪事

添加该模块后,我的代码仍保存在工作表中,然后回去尝试运行该代码以再次看到错误,奇怪的是,一旦代码进入模块,您将不会从工作表了。现在可能正在引用模块中的代码。