1

VBA で IRR 関数を使用しようとしています。IRR() は Excel でうまく機能します。以下のようにVBAでスクリプトを書いたところ、

a = Array(3, 4, 5)
b = IRR(a, 0.1)

「コンパイル エラー: 型の不一致: 配列またはユーザー定義型が必要です」というエラーが表示されました。私を唖然とさせるのは、ISが配列です。なにが問題ですか?


Pieter Geerkens に従って、関数を次のように書き直しました。

option base 1

Function trial()
Dim a(2) As Double, b As Double

a(1) = 1.2
a(2) = 3.4
b = IRR(a(), 0.1)
End Function

次のエラー メッセージが表示されます: 実行時エラー '5': プロシージャ コールまたは引数が無効です。

4

2 に答える 2

2

いいえ、a配列ではありません。それは「配列を含むバリアント」です。VBA は C タイプの言語ではなく、C タイプの言語のような初期化子がありません。このコードを試してください:

Dim a(0 To 2) As Double
a(0) = -3#
a(1) = 4#
a(2) = 5#

Dim v As Double: v = irr(a(), 0.1)
于 2016-01-27T01:01:37.100 に答える
2

Excel Application オブジェクトWorksheetFunction オブジェクト、またはその両方を適用する必要があります。さらに、配列の最初の要素は負であると予想されます。

    Dim a As Variant, b As Double

    a = Array(-6, 4, 5)

    b = Application.IRR(a, 0.1)
    Debug.Print b

    b = WorksheetFunction.IRR(a, 0.1)
    Debug.Print b

    b = Application.WorksheetFunction.IRR(a, 0.1)
    Debug.Print b

VBE のイミディエイト ウィンドウ ([ctrl]+G) からの結果

 0.305158649140883 
 0.305158649140883 
 0.305158649140883 
于 2016-01-27T01:14:37.190 に答える