Передача переменной из одного саба в другой

Как я могу передать uniqueId и uniqueId из подпроцесса в Sub DisplayCustomError. Я пытался пройти через DisplayCustomError, но он выдает "Невозможно использовать скобки при вызове Sub".

Ожидаемый результат: uniqueId и uniqueId должны перейти к Sub DisplayCustomError, чтобы создать объект json.

sub run
    On Error Resume Next
    wrapper.getVariable( "IRR" ).value = excel.range( "'Cases'!$H$783" )
    Dim uniqueId , uniqueId , errorMessage
    If Err.Number <> 0 And excel.range( "'Cases'!$H$783" ) = "" Then
     errorCode = "MC2006"
     uniqueId = "12"                 
     errorMessage= "Error while executing EVMLite.           
     DisplayCustomError(errorMessage)
     On Error Goto 0         
     Call Err.Raise(vbObjectError + 10, "EVM Failed to execute. ", errorMessage)  
    End If      
end sub

Sub DisplayCustomError(errorMessage)
If Err.Number <> 0 Then
    Dim objHTTP, URL, json, uniqueId, networkInfo, jobId
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")    
    URL = "http://10.93.24.223:9005/vpp/logerror"
    objHTTP.Open "POST", URL, False
    objHTTP.SetRequestHeader "Content-Type", "application/json"
    json = "{""jobId"": """& jobId &""", ""uniqueId"": """& uniqueId &""", ""errorCode"": """& errorCode &""", ""errorMessage"": """& errorMessage &"""}"
    objHTTP.send (json)
 End If

конец суб

1 ответ

Изменить Call строка от:

DisplayCustomError(errorMessage)

Для того, чтобы:

DisplayCustomError errorMessage 

Редактировать 1: передать несколько параметров:

Во-первых, вам нужно переопределить ваш Sub:

Sub DisplayCustomError(errorMessage As String, uniqueId As Long)

Затем, когда вы звоните, убедитесь, что вы передали правильный номер и тип параметров:

DisplayCustomError errorMessage, uniqueId

Кстати, вы можете передать параметры с разными именами, и он все равно будет работать. Например:

DisplayCustomError errorMessage, uniqueId

А потом

Sub DisplayCustomError(errMsg As String, uId As Long)

Редактировать 2: Полный код отредактирован (соответствующие части)

Sub run()

    On Error Resume Next
    wrapper.getVariable("IRR").Value = Excel.Range("'Cases'!$H$783")

    ' modified the line below
    Dim uniqueId As String, errorMessage As String

    If Err.Number <> 0 And Excel.Range("'Cases'!$H$783") = "" Then
        ErrorCode = "MC2006"
        uniqueId = "12"
        errorMessage = "Error while executing EVMLite.           "
        DisplayCustomError errorMessage, uniqueId ' <-- modifed this line
        On Error GoTo 0
        Call Err.Raise(vbObjectError + 10, "EVM Failed to execute. ", errorMessage)
    End If

End Sub

Sub DisplayCustomError(errMsg As String, uID As String) ' <-- modifed this line

If Err.Number <> 0 Then
    Dim objHTTP, URL, json, networkInfo, jobId ' <-- removed uniqueId from this line
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    URL = "http://10.93.24.223:9005/vpp/logerror"
    objHTTP.Open "POST", URL, False
    objHTTP.SetRequestHeader "Content-Type", "application/json"

    ' --- modifed the line below ---
    ' *** WHere do you get the value of jobId and ErrorCode ***
    json = "{""jobId"": """ & jobId & """, ""uniqueId"": """ & uID & """, ""errorCode"": """ & ErrorCode & """, ""errorMessage"": """ & errMsg & """}"
    objHTTP.send (json)
End If

End Sub
Другие вопросы по тегам