我在网络上有一个工作簿,其中包含工作表数据并包含大量数据,VBA代码,表单等。我开发了一个自定义功能区,可通过加载项打开此文件,并在按钮打开时执行宏单击功能区。
我遇到的问题是,一旦关闭包含绝大多数VBA代码的网络文件,代码执行就会停止(好像遇到了#34; End"命令)。由于用户能够在宏的中间取消操作,因此过程调用了" EndProcedures()"功能区工作簿中的宏(代码执行开始的那个)类似于调用堆栈中的#8,#2-7是驻留在#8关闭的工作簿中的过程。因为我想暂停代码执行和" EndProcedures()"中的下一行。宏只是全球"结束"无论如何,这不是一个问题。但是,在过去的几天里,我一直在努力解决一些神秘的错误,我认为这可能与我关闭工作簿的事实有关,因为它在调用堆栈中运行代码。我一直在" Out of Memory" VBA编辑器中的错误(虽然奇怪的是当VBA编辑器未打开时我还没有看到它们),我的想法是这是由于:
虽然我在网络文件中的宏中广泛使用自定义对象,但我对它们的内存使用非常小心(它们甚至不应该那么多)并且不要认为这段代码是"内存不足的来源"错误。现在的问题是,当代码在正在关闭的工作簿中运行时是否使用VBA代码关闭工作簿会导致内存不足"内存不足。错误,如果是这样,可以做什么,以便一旦宏执行结束,用户不会打开我的宏工作簿以肆虐。我真的需要编写适当的代码"退出Sub"一直走出调用堆栈?
这是我在StackOverflow上的第一篇文章,尽管我可能从这里学到了50%的VBA功能,所以请耐心等待这一点。
答案 0 :(得分:0)
在继续玩这几周后,似乎没有在涉及多个工作簿/模块的调用堆栈中退出代码执行是遇到的“Out of Memory”问题的根源。虽然我无法确定哪些编辑实际上解决了“内存不足”错误,但至少这个问题已经解决了我的满意程度。
P.S。 - 我回答了我自己的问题,因为它不再是一个问题,不是因为我必须指出一个决议。由于这是我在StackOverflow上的第一篇文章,如果这不是采取的正确行动,请告诉我。