VB运行时错误’91’:未设置对象变量或with block变量
最近用vb编了一个24小时运行定时打开浏览器登录的小软件,在运行的过程中,winxp系统会提示错误:“未设置对象变量或with block变量”,win7会弹出英语提示同样的错误。搜变了全网也没有答案,有的说是set没用对,有的说是new对象没用对,有的又说得定义全局对象,这些我都用不同的定义方法改了好多遍仍然提示这个错误,经过多次测试发现
这是vb的for each循环语句exit for的一个bug。
借用版主的例子如下:
Dim IEList As New ShellWindows
Dim browser
Dim Doc
Dim yn As Boolean
On Error Resume Next
'遍历当前地浏览器窗口
For Each browser In IEList
'先找IE窗口
If browser.FullName = IEPATH Then
'找到需要地IE窗口
If browser.Document.Title = 窗口标题 Then
'获得浏览器地文档对象
Set Doc = browser.Document
'填写用户名字段
Doc.body.All(用户标签).Value = Text1.Text
'填写密码字段
Doc.body.All(密码标签).Value = Text2.Text
'提交
Doc.body.All(提交标签).Click
yn = True
Exit For
End If
End If
Next
L1:************
这个代码段中for each循环中exit for语句,如果运行一次这个代码段后退出软件,可能不会出现错误提示,如果24小时运行的软件,就会出现错误提示:“未设置对象变量或with block变量”,
解决的方法是将"exit for"换成“goto L1”就不会提示错误了。
在这个论坛学到了很多知识,所以发在这个论坛希望能让更多的人看到。