【问题标题】:Range for current cell in custom vba function used in formula公式中使用的自定义 vba 函数中当前单元格的范围
【发布时间】:2012-05-25 07:40:24
【问题描述】:

我想编写一个函数Foo,可以在公式中使用它来返回使用它的单元格上方的单元格的内容。

例如,如果在单元格 B2 中,我写 =Foo() 我想获取 B1 的内容。

我知道我可以直接写=B1。显然,我在这里简化了案例。

那么,这个函数是什么样子的。

更准确地说,我希望(也)能够从其他函数中使用此函数(例如,将上面的单元格相乘的 Bar(factor) 函数,所以我可以写 =Bar(2)

【问题讨论】:

  • 为什么要这样做而不是,例如=Foo(B1)=Bar(B1,2)?对相对单元格引用进行硬编码就像自找麻烦……

标签: excel function vba formula


【解决方案1】:

这通常是个坏主意,因为您必须使函数易变,对计算等产生连锁反应。

Public Function Foo() As Variant
    Application.Volatile
    Foo = Application.Caller.Offset(-1, 0)
End Function

【讨论】:

【解决方案2】:

这行得通

Public Function Foo() As Variant
    Foo = Application.ThisCell.Offset(-1, 0)
End Function

【讨论】:

  • 欢迎您,感谢您的回答!如果您 format code snippets accordingly 并简要说明其工作原理,将会很有帮助。
  • 请注意这个函数不能正常工作:当下面的单元格发生变化时它不会重新计算,因为它引用了一个不在函数参数列表中的单元格:你需要使它成为 volatile 以防止那个。
猜你喜欢
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
相关资源
最近更新 更多