使用VBA将范围作为参数传递给公式

时间:2017-03-30 14:40:09

标签: vba excel-vba excel

我真的很想使用VBA,所以我提前为这个问题道歉:

基本上,我正在尝试编写一个子计算器来计算一系列动态数字的IRR。所以我尝试创建一个变量来选择数字范围,然后使用输出单元格(IRR)的命名范围,得到公式显示的结果。以下是我的代码:

Sub irrCalc()

Dim calcrange As Range


Set calcrange = Range("B55").End(xlToRight).Select


Range("IRR").Formula = "IRR(calcrange)"


End Sub

我得到的错误是“需要对象”,它指向代码的中心行“Set calcrange”。

我一直在寻找答案,但我似乎无法找到(或理解)问题是什么......我再次知道这可能很容易,但我有点难过。提前致谢

2 个答案:

答案 0 :(得分:3)

我无法确定。但也许你正在寻找这样的东西:

Sub irrCalc()

Dim calcrange As Range

Set calcrange = Range(Range("B55"), Range("B55").End(xlToRight))

Range("IRR").Formula = "=IRR(" & calcrange.Address & ")"

End Sub

答案 1 :(得分:0)

Range("IRR").Formula = "IRR(calcrange)" 

- 你正在将一个公式放入单元格,要求它通过名为" IRR"的子程序运行命名范围。

在模块中设置范围不会使其成为命名范围。您需要以下代码才能执行此操作:

Set rng1 = Range("B55:B200") ' How many columns need to be calculated
ActiveWorkbook.Names.Add Name:="calcrange", RefersTo:=Rng1 

现在您有一个可以使用的命名范围。

你有一个子程序" IRR"跟...共事?看起来你指的是一个名为" IRR的单个单元格。"对于诸如范围和函数或子例程之类的不同事物使用相同的名称是令人困惑的并且可能是错误的。你能发布你的子程序" IRR?"