将数组值分配给VBA中的变量会导致我的UDF退出

nig*_*ors 4 arrays excel vba range

我似乎无法弄清楚为什么这个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
Run Code Online (Sandbox Code Playgroud)

调试器到达currentInput = inputArray(i)但是一旦我移动到下一行,函数终止并且#VALUE!错误被输入到我调用函数的单元格中.我知道这是一个具体的问题,但我确定这是一个普遍的问题,我将编辑这个原始帖子以反映一般问题是什么.

编辑:这是有关将范围分配给变量数组的问题.

Dou*_*ncy 7

通过将它们设置为等于范围而创建的变体数组具有两个维度,即使它们只是一列或行宽.因此,如果您使用A1:A10调用该函数,您将获得一个10*1数组.此外,尺寸的下限将是一,而不是零.所以你必须做以下事情:

For i = 1 To (inputHeight)
    currentInput = inputArray(i, 1)
Run Code Online (Sandbox Code Playgroud)

此外,您应该使用Option Explicit,以便提醒您声明所有变量.从未声明InputHeight.