VBA将程序保存在内存中

时间:2011-06-27 13:18:02

标签: vba excel-vba excel

很抱歉,我不知道这是不是很简单,甚至不适合更大的编程方案。

所以以我简单的方式,我的程序一直是这个方案:1。启动程序,2。等待程序运行,3。程序完成并消失。

我现在正在做的是从一长串交易中创建一个表(10,000个)。该表有几个组合框供用户选择过滤器。现在,每次用户更改过滤器时,都会重新处理整个日志,这需要半分钟或一分钟。

我宁愿做的是将交易日志保存在内存中,或以某种方式潜在地但更直接可用。但是没有让程序在后台“旋转”。因此,如果用户想要在以后更新表格,用户可能不会意识到程序已在后台准备就绪。

这有意义吗?如果不能在VBA中完成,我仍然会好奇如何在另一个环境中完成它,比如C#,如果可能的话。谢谢。

3 个答案:

答案 0 :(得分:2)

有几个选项

  1. 首先,代码是否正确结构化?例如,您真的需要重新处理所有内容,还是重写更有效?
  2. 如果无法避免资源密集型代码,请使用进度条或消息通知用户。还要考虑使用DoEvents来释放操作系统,以便Excel可以处理其他事件。
  3. DoEvents很慢而且很脏。更好的看看这个链接DoEvents is slow!!! Here are faster methods
  4. 重写您的代码以异步工作。创建一个类,一个处理程序并异步处理每个事务。
  5. 您可以编写一些VBScript / Javascript并将任务推出以独立于Excel / VBA运行。例如,有一个例子Here
  6. 不要使用VBA:)
  7. 编辑:您是如何过滤的?如果您在数组测试中迭代数千个项目以获得标准,那么它可能会非常慢。 Excel的Advanced Filter非常快,可以快速处理数十万行,并且有多个标准。

答案 1 :(得分:2)

如果期权交易的更新频率足够低,您可以将过滤流程中的期权交易分开阅读和处理: 步骤1 - 刷新 - 读取日志并处理它们,将结果存储在全局容器(数组,集合,字典,对象......)中 第2步 - 用户请求 - 显示表单 - 用户选择过滤器 - 显示/存储从全局容器中提取的结果。

答案 2 :(得分:0)