繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM