我正在制作一款有趣的Excel项目。它运行得很完美,但是在大约一分钟的运行时间之后它会出错,因为它没有堆栈空间。我意识到这是因为技术上我在stepEvent
函数中使用了递归,如下所示:
Private Sub stepEvent()
' All the game code
start = Timer
Do While Timer < start + 0.15
DoEvents
Loop
stepEvent
End Sub
stepEvent
的所有实例都没有解决,直到玩家输了,或者用完了堆栈空间和错误。我的问题是,是否有办法解决递归的潜艇,但不知何故保留控制,或者如果有另一种方法重复该子而不使用递归。
答案 0 :(得分:1)
尝试循环
Sub asDoWhileLoop()
Do While True
Call stepEvent
Loop
End Sub
Sub stepEvent()
'Do game stuff and wait at end
End Sub
但请记住在stepEvent()的末尾清理,即将对象设置为NOTHING,关闭记录集,无论你正在玩什么。您可以使用END而不是EXIT SUB退出。但是,你应该确保它终止。