为什么我会收到此错误;
类型不匹配:'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)
此代码是在其他地方提出的,但没有任何关于它不起作用的报告。看起来应该可以,但事实并非如此。
此处显示的代码是您需要的一切。只需运行代码,您就会看到错误。
据我所知,有两个主要问题。
函数
UBound()
期望一个有效的数组返回上限,其他任何东西都会导致引发Type mismatch
错误。
这里的问题是该函数需要一个
Array
,但它正在传递一个 String
(如评论中所述)。如果字符串包含有效的字符串数组(可以通过分隔符解释为一维数组的字符串),您可以使用 Split()
函数将字符串转换为有效数组,并使用 IsArray()
检查有效数组返回数组。
函数
JumbleArray()
返回一个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