用VB生成的可执行文件,退出时提示:
运行时错误‘91’,未设置对象变量或with block变量。代码如下:
Private Sub MnuExit_Click()
If InputBox("请输入退出口令") = "exit" Then
On Error GoTo ShowOPCRemoveItemError
Set mOpcItms = Nothing
GoTo SkipOPCRemoveItemError
ShowOPCRemoveItemError:
MsgBox "删除Items错误", "提示"
SkipOPCRemoveItemError:On Error GoTo ShowOPCGroupRemoveError
mOpcGrps.RemoveAll
Set mOpcGrp = Nothing
Set mOpcGrps = Nothing
GoTo SkipRemoveGroupError
ShowOPCGroupRemoveError:
MsgBox "删除组和组集合错误", "提示"
SkipRemoveGroupError:
On Error GoTo ShowOPCDisconnectError
mOpcSvr.Disconnect
Set mOpcSvr = Nothing
GoTo SkipDisconnectError
ShowOPCDisconnectError:
MsgBox "断开OPC服务器时出错", "提示"
SkipDisconnectError:
MsgBox "通讯链接已经断开,点击按钮退出", , "提示"
StatusUpdate "关闭监控程序………"
Unload Me
End
Else
MsgBox "请输入正确的退出口令", , "提示"
StatusUpdate "退出口令错误………"
End If
End Sub
静待高手指点 谢谢
运行时错误‘91’,未设置对象变量或with block变量。代码如下:
Private Sub MnuExit_Click()
If InputBox("请输入退出口令") = "exit" Then
On Error GoTo ShowOPCRemoveItemError
Set mOpcItms = Nothing
GoTo SkipOPCRemoveItemError
ShowOPCRemoveItemError:
MsgBox "删除Items错误", "提示"
SkipOPCRemoveItemError:On Error GoTo ShowOPCGroupRemoveError
mOpcGrps.RemoveAll
Set mOpcGrp = Nothing
Set mOpcGrps = Nothing
GoTo SkipRemoveGroupError
ShowOPCGroupRemoveError:
MsgBox "删除组和组集合错误", "提示"
SkipRemoveGroupError:
On Error GoTo ShowOPCDisconnectError
mOpcSvr.Disconnect
Set mOpcSvr = Nothing
GoTo SkipDisconnectError
ShowOPCDisconnectError:
MsgBox "断开OPC服务器时出错", "提示"
SkipDisconnectError:
MsgBox "通讯链接已经断开,点击按钮退出", , "提示"
StatusUpdate "关闭监控程序………"
Unload Me
End
Else
MsgBox "请输入正确的退出口令", , "提示"
StatusUpdate "退出口令错误………"
End If
End Sub
静待高手指点 谢谢
Option Explicit
'>>>>>>> OPC服务器声明 <<<<<<
Public mOpcSvr As OPCServer '定义OPC服务器
Public mOpcGrps As OPCGroups '定义组集合
Public mOpcGrp As OPCGroup '定义组
Public mOpcItms As OPCItems '定义项目集合
Public lItemSvrHdls() As Long
'>>>>>>> 变量声明 <<<<<<
Public lNumItem As Long
Public lCltHdls(1 To 80) As Long
Public pErrors() As Long
Public szItemIDs(1 To 80) As String
Public accPath(1 To 80) As String
Public reqDataType(1 To 80) As Integer
Public timer(1 To 4) As Integer
Public plcVal() As Variant
Public plcVal1(1 To 80) As Variant
Public times As Integer
Public update1(0 To 17) As Boolean
Public update2(0 To 2) As Boolean
语法怎么看怎么别扭
原来是我程序中Timer1(interval=500)下还有一个OPC的同步读,
mOpcGrp.SyncRead OPCCache, 80, lItemSvrHdls, plcVal, pErrors.
所以在Private Sub MnuExit_Click()中加入一句frmLoad.Timer1.Enabled = False
问题就解决了!
再一次谢谢大家