【问题标题】:Excel RTD in VBAVBA中的Excel RTD
【发布时间】:2014-11-27 00:59:33
【问题描述】:

我正在尝试在 VBA 中获取 RTD 输出。问题是数据有时需要几秒钟才能返回,所以当我运行一个循环的一半时间它错误地返回 0。显然 RTD 正在异步运行。如何将其设置为同步运行以等待正确的输出?

如果我将公式放在单元格中,它通常会立即返回,有时需要一秒钟。如果我尝试在 VBA 中循环,它会过快地转到下一个值并返回误报,因为它没有等待数据返回。我已经尝试过 RTD.RefreshData,但它的加载速度不足以跟上我的循环。 (我的目标是使用 RTD 遍历数千个字段,这就是我需要这样做的原因)

【问题讨论】:

  • 在这上面有一些谷歌的东西:stackoverflow.com/questions/12856979/…
  • @Chrismas007 我已经阅读了所有这些,我得到了一些想法,但我还没有找到一个真正回答这个问题的链接。我正在考虑一些 hacky 解决方法,但这里的问题是速度。我需要在 VBA 中执行此操作的原因特别是因为我想循环数千个字段。

标签: vba excel rtd


【解决方案1】:

在循环中等待条件满足怎么样:

Do Until Cells(1, 1) <> "" ' use plausible condition
    Application.Wait (Now + TimeValue("0:00:01"))
Loop

【讨论】:

  • 如果他有 1000 个,这将是最后的手段。
  • @PortlandRunner 没错,1 秒太长了。我真的是骑自行车穿越数千个领域。有时它只有 100,但有时它已高达 10,000。这是我正在构建的动态系统。遗憾的是,我无法访问数据库本身,只能通过 RTD 访问,没有可用的 API。因此,如果周围有一些黑客,那就太好了。我可以以某种方式覆盖 IRTDUpdateEvent 来完成此操作吗?我什至不确定。此时,我正在考虑将一个 RTD 公式放入 1 张纸中,然后检测变化并丢弃空白。 交叉手指
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2012-04-16
  • 2011-04-05
  • 2019-02-18
相关资源
最近更新 更多