简单问题,我必须错过一些明显的东西。
我正在尝试创建一个子程序,轮询一个窗口是打开的,我的目标是通过一个循环来实现这一点,该循环将在满足两个条件时运行。我一直收到错误:
运行时错误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自动化,所以我还在学习。 编辑:为块上下文添加了更多代码。
答案 0 :(得分:2)
使用:
And (HWNDOut = 0))
您正在将字符串与数值进行比较..............这将失败。
答案 1 :(得分:0)
尝试将变量名称Timer更改为其他内容,例如StartTime(认为VBA中有一个Timer函数,它返回一个不同类型的值;所以最好不要使用保留或语义上有意义的单词)。
可能有帮助,可能不会,祝你好运。