Подпрограмма VBA не выходит из цикла

Я новичок в программировании, поэтому надеюсь, что вы мне поможете. Не знаю, как правильно сформулировать вопрос, поэтому ответов на 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

Спасибо


person BgreenDSI    schedule 02.05.2013    source источник


Ответы (1)


На линии:

If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

если значение в переменной OpcServerStrg не равно "ICONICS.IconicsOPCUAServer.V5", код снова зациклится на вершине For. strong> и снова выполните OpcServerStrg = OPCServerlist(i). Exit For не будет виден.

Когда вы говорите, что step through this code... возможно ли, что у вас есть точка останова, установленная в строке: OpcServerStrg = OPCServerlist(i), и вы нажимаете "Выполнить" (до точки останова) вместо того, чтобы щелкнуть, чтобы пошаговый код?

Попробуйте поставить точку останова на строке:

If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

затем проверьте значение OpcServerStrg, когда программа достигнет точки останова и остановится.

person Kevin Fegan    schedule 02.05.2013
comment
значение OpcServerStrg удовлетворяется. Когда я запускаю OpcServObj.Connect (OpcServerStrg), у меня возникает проблема. - person BgreenDSI; 02.05.2013
comment
Значение в точке останова — ICONICS.IconicsOPCUAServer.V5. - person BgreenDSI; 02.05.2013
comment
Я поставил точку останова на выходе, а затем продолжил пошаговое выполнение программы. Спасибо. - person BgreenDSI; 02.05.2013