首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VBA中使用IRR()函数

如何在VBA中使用IRR()函数
EN

Stack Overflow用户
提问于 2016-01-27 00:24:49
回答 2查看 2.7K关注 0票数 1

我试图在VBA中使用IRR函数。IRR()在Excel中工作得很好。正如我在VBA中编写的那样,

代码语言:javascript
复制
a = Array(3, 4, 5)
b = IRR(a, 0.1)

它抱怨“编译错误:类型错配:数组或用户定义的类型期望”。让我困惑的是一个数组。怎么啦?

我根据Pieter的说法改写了函数如下:

代码语言:javascript
复制
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':无效的过程调用或参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-27 01:14:37

您需要应用Excel应用对象WorksheetFunction对象或两者。此外,数组中的第一个元素预计为负值。

代码语言:javascript
复制
    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)的结果

代码语言:javascript
复制
 0.305158649140883 
 0.305158649140883 
 0.305158649140883 
票数 2
EN

Stack Overflow用户

发布于 2016-01-27 01:01:37

不,a不是数组;它是“包含数组的变体”。VBA不是C型语言,也没有那些初始化器.试试下面的代码:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35026621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档