Out of Stack Space 问题 - 我可以在不递归的情况下重复 Sub 吗?
Out of Stack Space Issue - Can I Repeat a Sub Without Recursing It?
我正在 Excel 做一个有趣的项目,制作游戏。它工作完美,只是在 运行 的大约一分钟后出错,因为它超出了堆栈 space。我意识到这是因为从技术上讲我在 stepEvent
函数中使用递归,它看起来像这样:
Private Sub stepEvent()
' All the game code
start = Timer
Do While Timer < start + 0.15
DoEvents
Loop
stepEvent
End Sub
None 的 stepEvent
实例会一直解析,直到玩家输了,或者 运行 出栈 space 和错误。我的问题是,是否有一种方法可以解决递归的子程序,但以某种方式保留控制权,或者是否有另一种方法可以在不使用递归的情况下重复该子程序。
尝试循环播放
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 退出。但这完全取决于您来确保它终止。
我正在 Excel 做一个有趣的项目,制作游戏。它工作完美,只是在 运行 的大约一分钟后出错,因为它超出了堆栈 space。我意识到这是因为从技术上讲我在 stepEvent
函数中使用递归,它看起来像这样:
Private Sub stepEvent()
' All the game code
start = Timer
Do While Timer < start + 0.15
DoEvents
Loop
stepEvent
End Sub
None 的 stepEvent
实例会一直解析,直到玩家输了,或者 运行 出栈 space 和错误。我的问题是,是否有一种方法可以解决递归的子程序,但以某种方式保留控制权,或者是否有另一种方法可以在不使用递归的情况下重复该子程序。
尝试循环播放
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 退出。但这完全取决于您来确保它终止。