closures运行代码的工作簿时会发生什么情况?

我在一个包含工作表数据并包含大量数据,VBA代码,表单等的networking上有一个工作簿。我通过一个插件开发了一个自定义function区,可以打开这个文件并在function区上的一个button上执行一个macros点击。

  1. 单击function区button时,将在加载自定义function区XML文件的加载项中执行callback。
  2. callback中的代码使用Application.Run()来打开并执行更大的networking文件,该文件包含冗长的自动化进程所需的工作表数据和macros。
  3. 如果用户通过几个表单之一的“取消”button取消操作(或者如果代码成功完成执行),则通过Application.Run将代码执行传递回自定义function区的插件中的另一个过程。
  4. 此加载项中的“EndProcedures()”macrosclosuresnetworking文件。

我遇到的问题是一旦closures了包含绝大多数VBA代码的networking文件,代码执行就会停止(就像遇到了“结束”命令一样)。 由于用户具有在macros中间取消操作的能力,程序调用function区工作簿中的“EndProcedures()”macros(代码执行开始的那个macros)就像调用栈中的#8一样, #2-7是正在被#8closures的工作簿中的程序。 由于我想停止代码执行,而“EndProcedures()”macros中的下一行无论如何都只是全局的“结束”命令,所以这不一定是个问题。 然而,在过去的几天里,我一直在琢磨着一些我在想的隐秘错误,这可能是因为我正在closures一个工作簿,而代码却在调用堆栈中运行。 我一直在VBA编辑器中发现“内存不足”的错误(虽然奇怪的是,当VBA编辑器没有打开时,我还没有看到它们),我的想法是,这是由于:

  1. 在文件本身被其他VBA代码closures之后,networking文件的代码窗口只是在VBA编辑器中打开
  2. 也许实际的内存问题,由于对象引用不被清除,因为文件被卸载,而不是遇到“结束小组”或“结束”行。

尽pipe我在networking文件中的macros中广泛使用了自定义对象,但是我非常小心它们的内存使用情况(甚至不应该那么多),并且不要认为这个代码是“Out of记忆“错误。 现在的问题是当代码在被closures的工作簿中运行代码时,是否用VBA代码closures工作簿可能会导致“内存不足”错误,如果可以,可以做些什么,以便一旦macros执行结束,用户不必我的macros观工作手册可能带来混乱。 我真的必须编写适当的“退出子线”从调用堆栈的所有方式吗?

这是我的第一篇文章StackOverflow,尽pipe我可能从这里学到了我能在VBA中做的50%,所以请耐心等待。

经过几个星期的继续玩,这似乎并没有出现在涉及多个工作簿/模块的调用堆栈中间退出代码执行是遇到的“内存不足”问题的来源。 虽然我一直无法确定哪些编辑实际上解决了“内存不足”的错误,但至less这个问题已经解决令我满意。

PS – 我回答了我自己的问题,因为它不再是一个问题,不是因为我一定要找出一个决议。 因为这是我的第一篇文章StackOverflow,如果这不是正确的行动,请让我知道。