在多个条件下执行

Do While with Multiple Conditions

简单的问题,我一定是遗漏了一些明显的东西。

我正在尝试创建一个子例程来轮询 window 是否打开,我的目标是通过一个循环来完成此操作,该循环将 运行 同时满足两个条件。我不断收到错误消息:

Run time error 13: Type Mismatch

在 Do while 循环中,在 SO 上搜索了类似的问题后,我仍然不太确定我做错了什么。

这是不断出错的行:

Sub FindHWND()
    Dim HWNDOut as string
    Dim Timer as Date
    Timer = Now()
    'This following line is the one erroring out. 
    Do While ((Now() < Timer + TimeValue("00:00:10")) And (HWNDOut = 0))
        HWNDOut = CStr(Hex(FindWindowEx(0&, 0, "SunAwtFrame", "Graph.graphml - yEd")))
        Debug.Print HWNDOut
        Sleep (100)
    Loop
    'Other, following sub and code that is not relevant
End Sub

其中Timer是循环开始前的Now()HWNDOut是我要找的window的句柄,会找到在循环中。

这个循环所做的就是每100毫秒查看一次第三方程序的window是否已经打开,以防止在下一个子程序中丢失命令。

Post 脚本:如果有人有任何建议如何做得更好,我会洗耳恭听。这是我第一次使用 UI 自动化,所以我还在学习。 编辑:为上下文块添加了更多代码。

与:

And (HWNDOut = 0))

您正在将 String 与数值进行比较......这将失败。

尝试将变量名称 Timer 更改为其他名称,例如StartTime(认为 VBA 中有一个 Timer 函数,其中 returns 一个不同类型的值;所以最好不要使用保留或语义上重要的词。

可能有帮助,也可能没有,祝你好运。