Передача переменной из одного саба в другой
Как я могу передать 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