VBA中的RTD问题

时间:2017-03-14 20:52:59

标签: vba

VBA宏更新单元格(a,b)=" = RTD(serv,title,source),然后继续使用接收值进行某些计算。问题是(1)我事前并不知道源是否存在,所以我必须猜测,(2)如果源确实存在,则该单元通常不会按时更新。 (3)简单地等待没有帮助。 (4)经常杀宏,但比我不得不求助于手动重启。 (5)使用

暂停宏运行
Sub Break_And_Go()

Dim Brk As String
Dim Entr    As String
Dim Esc As String

Brk = "{BREAK}"
Entr = "{ENTER}"
Esc = "{ESC}"

'   use "send key to simulate manual stop and go"
Application.EnableCancelKey = xlDisabled
Application.SendKeys Esc, True
DoEvents
Application.Wait (Now + TimeValue("00:00:01"))
Application.rtd.RestartServers
Application.rtd.RefreshData
Application.SendKeys Entr, True
Application.Wait (Now + TimeValue("00:00:01"))
DoEvents
Application.EnableCancelKey = xlInterrupt
'    Application.OnTime Now + TimeValue("00:00:05"), "Break_And_Go", False

End Sub '    Break_And_Go

以上并不可靠。特别是在多个细胞索引上的长循环中。有时所有单元格都会更新,有时候某些单元格会保留" N / A"有时候没有更新任何单元格。在视觉上对源进行检查时,通常存在差异:源存在,而更新失败。

1 个答案:

答案 0 :(得分:0)

对我来说,设置Application.EnableCancelKey = value不再有效,而以前也是如此。对你起作用吗?这也可能是你的错误

您的application.calculation状态如何? 这是一个重复的问题吗?尝试application.ScreenUpdating = true然后为false