Dan*_*Lee 2 vbscript runtime-error
当我尝试调用我创建的函数时,遇到类型不匹配错误。
例子:
Function DoThis(paramA, paramB, paramC)
If paramA = "Something" Then
DoThis = DoSomething
ElseIf paramA = "This" Then
DoThis = DoSomethingDifferent
Else
DoThis = DoThisOtherThing
End If
End Function
Dim result: result = DoThis(valueA, ValueB, ValueC)
Run Code Online (Sandbox Code Playgroud)
谁能看到我的错误可能是什么?其他功能工作正常。我通过实际复制并粘贴函数名称到我调用的地方来仔细检查拼写。我已经验证函数名称没有在其他地方使用,即作为常量或其他东西。
请注意,调试时所有参数的 ValType 都是 vbString。另外,我永远无法输入该函数,所以这不像我在调试该函数,输入它然后得到类型不匹配。
ty。
VBScript只有一种数据类型,称为Variant。Variant是一种特殊的数据类型,可以包含不同类型的信息,具体取决于其使用方式。因为Variant是 中唯一的数据类型VBScript,所以它也是 中所有函数返回的数据类型VBScript。
Variant可以包含一些数据子类型(例如Empty, Null, string, integer, object, array等)。您可以使用一些转换函数将数据从一种子类型转换为另一种子类型(如果该转换不是隐式在VBScript. True现在,请注意和的真实数据子类型vbTrue。
True关键字(布尔文字)的值(内部表示)等于 -1。
另一方面,vbTrue是少数几个内置常量之一,尽管它的名称如此,但它具有Integer的子类型!它是所谓的三态常数之一:
Constant Value Description
vbUseDefault -2 Use default from computer's regional settings.
vbTrue -1 True
vbFalse 0 False
Run Code Online (Sandbox Code Playgroud)
我希望接下来的代码能够澄清上述所有陈述:
Wscript.Echo _
vbTrue, CStr( vbTrue), VarType( vbTrue), TypeName( vbTrue) , _
vbNewLine, True, CStr( True), VarType( True), TypeName( True)
Run Code Online (Sandbox Code Playgroud)
然而,与 一起使用时If _condition_ Then ...,有一些特殊性;简而言之:仅当单个测试If 条件不成立(即任何非零数字为 true,而不仅仅是 -1)时,该语句Then的部分才会有条件地执行语句组。因此,只要结果是数字,您就可以使用您选择的任何变量或表达式(数字或字符串)...If ... False
总结一下:If _expr_ Then ...是一样的
If CBool(_expr_) Then ...
| 归档时间: |
|
| 查看次数: |
41220 次 |
| 最近记录: |