做多个条件

时间:2017-12-08 20:16:56

标签: vba excel-vba ui-automation excel

简单问题,我必须错过一些明显的东西。

我正在尝试创建一个子程序,轮询一个窗口是打开的,我的目标是通过一个循环来实现这一点,该循环将在满足两个条件时运行。我一直收到错误:

  

运行时错误13:输入不匹配

在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是我正在寻找的窗口的句柄,它将在循环中找到。

所有这个循环确实是每100个MS查看是否已打开第三方程序的窗口,以防止在下一个子程序中丢失命令。

Post Script:如果有人有任何建议如何更好地做到这一点,我全都听见了。这是我第一次使用UI自动化,所以我还在学习。 编辑:为块上下文添加了更多代码。

2 个答案:

答案 0 :(得分:2)

使用:

And (HWNDOut = 0))

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

答案 1 :(得分:0)

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

可能有帮助,可能不会,祝你好运。