有没有办法来响应在Excel中的条件格式的变化?

我有一个Excel表格,可以链接到实时市场数据。 我使用计时器每秒钟观看dde价格。 然后在满足特定条件时提交订单。 我尝试了一个无限循环DoEvent在中间工作5秒,然后冻结工作簿。

有没有办法来响应dde更新的变化? 更改事件不会检测到它们。 它只是检测用户手动更改。

有人告诉我,如果我有条件格式,有一种方法来获取这个事件。 所以我可以创build一个单元格公式,当我的条件满足时变为true,然后有条件地格式化某些格式化的格式,然后select格式更改事件。 那可能吗? 如果是这样的话。 任何build议,将不胜感激。

澄清:我想select一个事件在VBA将提交订单交易股票。 我现在这样做的方式是用一个计时器,它循环遍历所有行,在触发器列中查找真正的单元格。 一旦find它将closures该行的标志(将真实条件设置为false)并提交订单。

问题是,一秒钟是快速移动股票的永恒。 所以我需要在触发器列中的单元格变为真时在VBA中引发一个事件,以便我可以立即响应,而不是等待定时器类的第二个时间间隔。

据我所知,你不能以小于1秒的时间调用定时器。 如果我可以使用毫秒,我的问题将被解决。 我只是每10毫秒循环一次。

据我所知,我不能在VBA中创build另一个线程。 如果我可以做一个无限循环,并在每次迭代10毫秒左右后进入hibernate状态。

据我所知,我不能直接把dde拉到VBA甚至.net上,因为MSDN说它不再被支持。

我希望这个澄清。 所有的build议表示赞赏。

如果您创build了一个虚拟函数,它将DDE输出单元作为参数,那么您应该能够响应Worksheet_Calculate事件?

我猜这可能会工作,但我没有使用DDE的经验:DDE更新甚至可能直接触发Calculate事件。

如果你问是否可以使用条件格式来触发一个事件,是的,这是可能的。 我自己并不熟悉DDE模型,然而,混合条件格式来从数据条件触发事件看起来像是一个额外的步骤,因为Stepan1010指出。

您可能需要考虑Excel链接中的讨论,因为问题的核心是改变基于单元格的DDE连接对单元格的更改: http ://www.mrexcel.com/forum/showthread.php?176508 -Comments-VBA-AMP-最小-最大

您也可以考虑使用一个DoEvent,并在一段时间内设置一个循环,根据您实际实现macros的时间长短(如果这适用于您的应用程序)。 这篇文章是专注于一个状态栏,但我认为相同的逻辑适用于一个事件执行方面,基于一个循环内的条件: 强制在Excel VBA中的屏幕更新

希望这对你有帮助=)

〜JOL

为什么不重新创build单元格中的条件格式化逻辑?

例如,你的条件格式化逻辑可能会突出显示一个单元格,当它超过一定的数字 – 你可以把这个逻辑放在另一个单元格中 – 例如。 = IF(A1> 100,TRUE,FALSE)

所以我想我的问题是 – 为什么select格式更改事件,当你可以拿起事件本身?

编辑您的说明:

如果你想在VBA中连续运行一个macros,你不需要一个定时器 – 你可以像这样做一个连续的循环:

 Sub macro1() Dim i As Double With Sheet1 Do '.Cells(5, 4).Value = i i = i + 1 .Cells(1, 1).Value = i ' you are going to want to comment this out if you want to don't need to do other things DoEvents If Sheets("Sheet1").Range("A2").Value = True Then ' put your code here. End If Loop End With End Sub 

所以我仍然不能理解你的情况。