![](/img/trans.png)
[英]VBA sub call gives “compile error: Type mismatch: array or user-defined type expected”
[英]Passing an array into the IRR function in VBA. Keep getting the error "Compile error: Type mismatch: array or user-defined type expected."
我正在計算 VBA 中數組的 IRR。 這是我丑陋的代碼:
Dim iRRArray() As Variant
Erase iRRArray()
ReDim iRRArray(garageLife)
Dim i As Integer
i = 0
Do While i <= garageLife
Dim difference As Double
difference = (Worksheets("IRR").Cells(k + 1, i).Value - Worksheets("IRR").Cells(defender, i).Value) * -1
iRRArray(i) = difference
i = i + 1
Loop
Dim iRRValueTemp As Variant
iRRValueTemp = IRR(iRRArray(), 0.1)
(加載到“差異”變量中的混亂只是根據工作表中的單元格將值加載到數組中。)
當我在電子表格中使用 IRR 函數時,這組特定的數據在 IRR 函數中工作得很好。 但是,當我嘗試運行宏時,它在包含 IRR 函數的行上給了我“編譯錯誤:類型不匹配:預期的數組或用戶定義類型”。 這讓我很困惑,因為我加載到 IRR 中的顯然是一個數組......
我試過的:
是的,該數組確實包含至少一個符號變化。
提前致謝!
您的調用iRRValueTemp = IRR(iRRArray, 0.1)
調用Office-VBA IRR 函數。 但這需要一個Double
數組,而不是一個Variant
數組。
Application.IRR
或WorksheetFunction.IRR
可以使用Variant
數組。
Sub test()
Dim iRRArray() As Double
'Dim iRRArray() As Variant
ReDim iRRArray(9)
iRRArray(0) = -3
Dim i As Long
For i = 1 To 9
iRRArray(i) = 1 + i / 10
Next
Dim iRRValueTemp As Variant
iRRValueTemp = IRR(iRRArray, 0.1) 'will only work using Dim iRRArray() As Double
'iRRValueTemp = WorksheetFunction.IRR(iRRArray, 0.1)
'iRRValueTemp = Application.IRR(iRRArray, 0.1)
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.