代码在IDE中崩溃时出现错误91“对象变量未设置”

时间:2009-03-09 23:11:01

标签: vb6 webbrowser-control

此代码在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

2 个答案:

答案 0 :(得分:1)

如果没有看到更多的示例代码,我冒昧地猜测这是VB IDE“隐藏”的时序问题。在设置.Value属性之前测试WebBrowser.Document.All(“UserId”)。在非IDE版本的代码到达那一点时,它可能不可用(Nothing)。

“对象变量或块变量未设置”是VB告诉您空引用的方式,在We​​bBrowser.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,看看是否会产生影响。