VBA子例程不会退出循环

时间:2013-05-02 16:47:38

标签: vba plc scada

我是编程的新手,所以我希望你能帮助我。不知道如何制定正确的问题,所以我没有找到任何StackOverflow答案。

当我单步执行此代码并转到OpcServObj.Connect OpcServerStrg时,它无法连接。我没有错误,似乎没有任何事情发生。光标跳到左边距并且什么都不做。只有当我继续逐步完成例行程序时,才会再次启动该功能。它应该继续并退出for循环,我计划再次测试连接状态。

参考图书馆: OPC DA Automation Wrapper 2.02

Sub Main()
ConnectOPC
End Sub

Private Function ConnectOPC() As Boolean

Dim OpcServObj As OPCAutomation.OPCServer            
Dim OpcGroupObj As OPCAutomation.OPCGroup            

Dim OPCServerlist As Variant
Dim OpcServerStrg As String

Set OpcServObj = New OPCAutomation.OPCServer          
OPCServerlist = OpcServObj.GetOPCServers

If OpcServObj.ServerState <> True Then

    For i = 1 To UBound(OPCServerlist) 

       OpcServerStrg = OPCServerlist(i)

         If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

            OpcServObj.Connect OpcServerStrg

            Exit For

         End If

    Next i

End If

End Function

由于

1 个答案:

答案 0 :(得分:0)

在这一行:

If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

如果变量 OpcServerStrg 中的值等于 "ICONICS.IconicsOPCUAServer.V5" ,则代码将再次循环在 For 循环的顶部,再次执行 OpcServerStrg = OPCServerlist(i) Exit For 将不会被看到。

当您说 step through this code 时...您可能在该行设置了断点: OpcServerStrg = OPCServerlist(i) ,并且您是单击运行(直到断点)而不是单击以单步执行代码?

尝试在该行设置断点:

If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

然后在程序到达断点时检查 OpcServerStrg 的值并停止。