簡體   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