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

标签 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

调试器到达 currentInput = inputArray(i) 但一旦我移动到下一行,函数就会终止,并且在单元格 I 中输入 #VALUE! 错误从调用该函数。我知道这是一个具体问题,但我确信这是一个普遍问题,我将编辑这篇原始帖子以反射(reflect)普遍问题。

编辑:这是一个有关将范围分配给变体数组的问题。

最佳答案

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

For i = 1 To (inputHeight)
    currentInput = inputArray(i, 1)

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

关于arrays - 在 VBA 中将数组值分配给变量会导致我的 UDF 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11237567/

相关文章:

javascript - 选择随机数组,然后选择该数组中的一个元素

php - PHP 5.3 和 5.4 中访问数组的差异或某些配置不匹配?

python : running Excel macro with python

vba - 类模块的全局变量声明

c++使用ptr作为数组基础

arrays - 比较字符串和数组

vba - 向 Excel VBA 用户窗体添加网格线

excel - 如何使用 Excel VBA 创建单位矩阵?

excel - 满足条件时,在不满足条件的情况下,在其下方的每一行显示当前行值

c# - Excel SqlBulkCopy 在本地 pc 和应用程序服务器上的工作方式不同吗?