【问题标题】:VBA Subroutine doesn't exit for loopVBA 子程序不退出循环
【发布时间】:2013-04-26 22:41:35
【问题描述】:

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

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

参考库: OPC DA 自动化包装器 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

谢谢

【问题讨论】:

    标签: vba plc scada


    【解决方案1】:

    在线:

    If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then
    

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

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

    尝试在该行设置断点:

    If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then
    

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

    【讨论】:

    • OpcServerStrg 的值确实得到了满足。当我执行 OpcServObj.Connect (OpcServerStrg) 时遇到问题。
    • 断点处的值为“ICONICS.IconicsOPCUAServer.V5”
    • 我在出口处放了一个断点,然后继续单步执行程序。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2017-03-04
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多