此代码在IDE中运行良好,但每次在最后一行崩溃时都会在同一台机器上运行并运行。知道为什么吗?
PageFinished = False
Cancelling = False
OKToUnload = False
WebBrowser.Navigate ("https://www.example.com/index.jsp")
Do While PageFinished = False 'set to true in document complete event
DoEvents
If Cancelling = True Then
OKToUnload = True
GoTo Endline
End If
Loop
PageFinished = False
WebBrowser.Document.All("UserId").Value = txtNumber.Text 'error here
答案 0 :(得分:1)
如果没有看到更多的示例代码,我冒昧地猜测这是VB IDE“隐藏”的时序问题。在设置.Value属性之前测试WebBrowser.Document.All(“UserId”)。在非IDE版本的代码到达那一点时,它可能不可用(Nothing)。
“对象变量或块变量未设置”是VB告诉您空引用的方式,在WebBrowser.Document.All(“UserId”)行中,您有3个单独的对象,可以为空。
答案 1 :(得分:1)
您需要添加msgboxes,显示测试哪个变量设置为NOTHING或写入文本文件并运行exe并查看设置为空的结果。
可能就像在最后一行之前等待一样简单。 Wait子例程看起来像这样。
Public Sub Wait(T As Double)
Dim StartTime As Double
StartTime = Timer
Do While Abs(Timer - StartTime) < T
Loop
End Sub
我会尝试1/10秒并继续努力。即等待.1如果必须等待一秒或更长时间,请确保定期调用DoEvents以使应用程序保持响应。
原因是IDE始终使用PCODE,因此触摸速度比EXE符合EXE要慢。您可能还想尝试编译PCODE,看看是否会产生影响。