Excel 等待函数完成,然后继续

Excel 等待函数完成,然后继续,excel,vba,Excel,Vba,我有一个名为Setup的宏,其中有一个名为Game的函数。当按下按钮时,宏开始执行,然后他调用Game,现在,宏继续运行而不等待Game完成,然后我在Game之后进行的计算无效,因为游戏尚未完成 我希望我的宏等待游戏完成,然后根据游戏计算分数 子设置() 游戏 计算高分 端接头 从上面的代码可以看出,CalculateHighestScore在不等待游戏结束的情况下开始,然后统计数据就错了您需要确保CalculateHighestScore所需的变量/数据是全局的,因此,在执行游戏函数后,

我有一个名为
Setup
的宏,其中有一个名为
Game
的函数。当按下按钮时,宏开始执行,然后他调用
Game
,现在,宏继续运行而不等待
Game
完成,然后我在
Game
之后进行的计算无效,因为游戏尚未完成

  • 我希望我的宏等待
    游戏
    完成,然后根据游戏计算分数
子设置()
游戏
计算高分
端接头

从上面的代码可以看出,
CalculateHighestScore
在不等待游戏结束的情况下开始,然后统计数据就错了

您需要确保CalculateHighestScore所需的变量/数据是全局的,因此,在执行游戏函数后,数据仍然有效,并且可供CalculateHighestScore函数访问

如果函数正在从excel范围提取数据,请尝试添加

    Sub Setup()
        Game
        Application.calculate
        CalculateHighestScore
    End Sub

并检查它是否有效,这将在处理CalculateHighestScore之前重新计算所有excel公式

根据上面的代码,我看不到这一点
CalculateHighestScore
Game
完成后开始。@GSerg它实际上没有。我可以通过说我还有另一行更新棋盘上的其他分数来确认这一点,它从调用
游戏时开始,无需等待
Game
完成。
Game
是VBA模块中的一个子模块,而不是调用其他外部应用程序吗?@FaneDuru
Game
是从
Setup
调用的函数,而不是从其他任何地方调用的函数。在该代码中,
CalculateHighestScore
不可能在
Game
完成之前运行。所以要么它没有,要么你对“
游戏
完成”的含义有错误的期望。这意味着宏已返回。是的。如果在该宏中启动了一个异步进程,例如启动了一个外部可执行文件,那么等待该进程完成并不是“
游戏
完成”的一部分,除非您专门编写代码使其成为这一部分。因此,我们无法在不知道您在
游戏中正在做什么的情况下帮助您,因此,简单地从游戏中返回不会对您起到“完成”的作用。
CalculateHighestScore
从表中获取值,即-
范围(“L5”)。值
。现在检查,我已经更新了我的答案,希望它能起作用。我没有否决您的意见,但很可能是因为你的回答假设了OP没有提供的信息。如果你这样做了,事先陈述你所做的假设是很有帮助的。