【发布时间】:2018-01-14 16:03:56
【问题描述】:
如何将 sub run 中的 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
结束子
【问题讨论】:
-
使用不带括号的
DisplayCustomError errorMessage或使用Call DisplayCustomError(errorMessage)。如果你想有多个参数,在你的子定义中用逗号分隔它们:Sub DisplayCustomError(errorMessage as String, UniqueID as Integer, Parameter as Integer) -
不同的主题但是:进入 Sub DisplayCustomError(errorMessage) Err.Number 将始终为零,因为对 .DisplayCustomError() 的调用成功。因此,您对 Err.Number 的测试将始终为假。你已经知道你有一个错误,所以删除 Err.Number 0 的测试。
-
@RikSportel 我试图作为 Sub DisplayCustomError(errorMessage as String, UniqueID as Integer, Parameter as Integer) 传递,但它给出了错误“Expected ')'”
-
您确定粘贴的代码与实际项目中显示的完全一致吗?上面的代码不应该编译。您有一个重复的声明以及一个未正确关闭的字符串。
标签: vba excel vbscript adsutil.vbs