[英]Assigning an array value to a variable in VBA causes my UDF to exit
我似乎无法弄清楚为什么这个UDF在currentInput = inputArray(i)
上退出。 以下是相关代码:
Function OrderRange(inputRange As Range) As Variant
Dim length As Integer
inputHeight = inputRange.Count
Dim inputArray As Variant
inputArray = inputRange
Dim strippedArray() As Variant
ReDim strippedArray(0 To (inputHeight - 1))
Dim currentInput As String
Dim i As Integer
For i = 0 To (inputHeight - 1)
currentInput = inputArray(i)
'...computations on currentInput...'
strippedArray(i) = currentInput
Next i
OrderRange = strippedArray
End Function
调试器到达currentInput = inputArray(i)
但是一旦我移至下一行,函数将终止并出现#VALUE!
错误输入到我从中调用该函数的单元格中。 我知道这是一个特定的问题,但是我敢肯定这是一个普遍的问题,我将编辑此原始帖子以反映普遍的问题。
编辑:这是有关将范围分配给变量数组的问题。
通过将它们设置为等于范围而创建的变量数组即使只有一列或一排宽,也具有两个维度。 因此,如果使用A1:A10调用该函数,则会得到10 * 1数组。 同样,尺寸的下限将为1,而不是零。 因此,您必须执行以下操作:
For i = 1 To (inputHeight)
currentInput = inputArray(i, 1)
另外,您应该使用Option Explicit,以便提醒您声明所有变量。 永远不会声明InputHeight。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.