类型不匹配:'UBound'

Type mismatch: 'UBound'

为什么会出现这个错误;

Type mismatch: 'UBound'

Function JumbleArray(ByVal aArray)
    Dim iUpper, iLower, iLoop, iSwapPos, varTmp
    iUpper = UBound(aArray)
    iLower = LBound(aArray)

    Randomize Timer
    For iLoop = iLower To iUpper
        iSwapPos = Int(Rnd * (iUpper + 1))

        varTmp = aArray(iLoop)
        aArray(iLoop) = aArray(iSwapPos)
        aArray(iSwapPos) = varTmp
    Next

    JumbleArray = aArray
End Function

Dim strTestArray
strTestArray = "1,2,3,4,5,6,7,8"

Shuffle = JumbleArray(strTestArray)

此代码是在其他地方提出的,但没有任何关于它不起作用的报告。看起来应该可以,但实际上没有。

此处显示的代码是您需要的一切。通过简单地 运行 您将看到错误的代码。

问题不是很清楚,但据我所知主要有两个问题。

  1. 函数 UBound() 需要一个有效的数组 return 上限,任何其他内容都会引发 Type mismatch 错误。

    这里的问题是函数需要一个 Array 但它被传递了一个 String (如评论中所述)。如果字符串包含有效的字符串数组 (可以通过分隔符解释为一维数组的字符串),则可以使用 Split() 函数将字符串转换为有效数组和 IsArray() 检查有效数组是 returned.

  2. 函数JumbleArray() return是一个Array,不能只使用Response.Write()输出到页面。要输出它,您首先需要使用 IsArray() 检查其有效数组,然后使用 Join() 输出值或使用循环遍历数组中的每个元素。

调用函数时试试这个;

strTestArray = "1,2,3,4,5,6,7,8"
Dim TestArray: TestArray = Split(strTestArray, ",")
If IsArray(TestArray) Then
  TestArray = JumbleArray(TestArray)
  If IsArray(TestArray) Then
    Call Response.Write(Join(TestArray, ","))
  End If
Else
  Call Response.Write("Not a valid array")
End If