【发布时间】:2012-07-25 17:59:22
【问题描述】:
我有一个 Excel 表,其中包含指向实时市场数据的 dde 链接。我使用计时器每秒查看 dde 价格。然后在满足某些条件时提交订单。我尝试了一个中间有 DoEvent 的无限循环,它工作了 5 秒,然后冻结了工作簿。
有没有办法响应 dde 更新的变化?更改事件不会检测到它们。它只是检测用户何时进行手动更改。
有人告诉我,如果我有条件格式,就有办法获取该事件。因此,我可以创建一个单元格公式以在满足我的条件时变为真,然后在条件为真时将该单元格设置为某种格式,然后获取格式更改事件。那可能吗?如果有怎么办。任何建议,将不胜感激。
澄清:我想在 VBA 中选择一个事件,该事件将提交交易股票的订单。我现在这样做的方式是使用一个计时器,该计时器循环遍历所有行,在触发器列中寻找真正的单元格。一旦找到它就会关闭该行的标志(将真条件设置为假)并提交订单。
问题在于,对于快速移动的股票来说,一秒钟是永恒的。因此,当触发器列中的单元格变为真时,我需要在 VBA 中引发一个事件,这样我就可以立即响应,而不是等待计时器类的第二个间隔。
据我所知,您不能调用值小于一秒的计时器。如果我可以使用毫秒,我的问题就会得到解决。我只是每 10 毫秒循环一次列表。
据我所知,我无法在 VBA 中创建另一个线程。如果可以的话,我会做一个无限循环,并在每次迭代后让它休眠 10 毫秒左右。
据我所知,我无法将 dde 直接拉入 VBA 甚至 .net,因为 MSDN 表示它不再受支持。
我希望这可以澄清。所有建议表示赞赏。
【问题讨论】:
-
如果您创建了一个将 DDE 输出单元格作为参数的虚拟函数,那么您应该能够响应
Worksheet_Calculate事件吗?我猜这可能行得通,但我没有使用 DDE 的经验。 -
@Tim Worksheet_Calculate 什么时候触发?
-
工作表计算时。我不知道 DDE 更改是否会直接触发计算 - 如果没有,则使用虚拟公式来触发事件(它将您的 DDE 单元格作为输入,这些单元格中的更改应触发重新计算)
-
这成功了。谢谢一百万
-
@TimWilliams 请添加这个答案。
标签: excel vba excel-2003 dynamic-data-exchange