数组完全填充第一个输出值的重复

数组完全填充第一个输出值的重复

我以前使用过那个输入和输出都在 LINE 范围内的子系统。一切都运行良好。

然后我将数据切换到列范围。现在,该函数正确地循环遍历所有输入数据,正确地进行所有计算,但似乎输出数据未正确添加到数组中:如果输入范围内有 10 个项目,它将在输出范围内给出 10 次相同的答案,该答案是第一个输入的结果。

感谢您的帮助。

Sub GoalSeek5Y()

Dim rRangeInput As Range
Dim rCell As Range
Dim rRangeOutput As Range
Dim sTicker As String
Dim cSpread As Currency
Dim cArraySpread() As Currency
Dim Spread As Currency
Dim x As Integer

Set rRangeInput = Sheets("DB_RES").Range("U2:U4")
Set rRangeOutput = Sheets("DB_RES").Range("Z2:Z4")
ReDim Preserve cArraySpread(1 To rRangeOutput.Cells.Count)

x = 1
    For Each rCell In rRangeInput.Cells
        sTicker = rCell.Value
        Sheets("CALCULS_NPV").Range("newTicker").Value = sTicker
        Range("NPVpriceDiff ").goalSeek Goal:=Range("goal"), ChangingCell:=Range("Spread")
        cSpread = Sheets("CALCULS_NPV").Range("Spread").Value2
        cArraySpread(x) = cSpread
        x = x + 1
    Next rCell
    rRangeOutput = cArraySpread
Debug.Print cSpread

子目录结束

答案1

解决了。

我的“新”理解是,默认情况下,VBA 将数组填充到一行中。要将数组的值放在列中,必须对数组进行转置。

所以我修改了“Next rCell”之后的代码行,现在一切正常。

            Next rCell                                                                
    rRangeOutput = Application.WorksheetFunction.Transpose(cArraySpread)
    Debug.Print cSpread

相关内容