【问题标题】:Declare VBA variable and use it in a worksheet in Excel声明 VBA 变量并在 Excel 的工作表中使用它
【发布时间】:2017-09-13 06:24:10
【问题描述】:

我想在 Excel 文档的 vba 代码中声明一个变量并在单元格中使用它。

类似这样的:

Vba 代码:

Dim foo as Integer
foo = 2

Excel 单元格(任意)

=foo

这可能吗?

【问题讨论】:

  • 不,这是不可能的,除非您想使用 modeless 并且可能不可见 userform。您只能将值存储在工作表中(如果需要,可以隐藏它们)。单元格可以用作命名范围,然后您可以使用=foo 引用它们。然而,该值必须在一个单元格中(再次)。
  • 好的。非常感谢!
  • 嗯,你可以。如果您在模块中创建 Public UDF,则可以像任何其他内置函数调用一样从您的单元格中调用此 UDF...即假设您的模块中有一个名为 GetFoo 的 UDF。在您的单元格中输入=GetFoo(),您的单元格将显示您的UDF 返回的值。您遇到的问题是,这仅在您最初调用该函数时触发。如果你然后去更改GetFoo 中的返回值,除非你再次触发它,否则单元格不会得到更新

标签: excel vba


【解决方案1】:

您可以在代码模块中声明公共函数

Public Function Foo() As Integer
  Foo = 2
End Function

并在单元格中使用它

=Foo()

【讨论】:

  • :) 伟大的思想等等。问题仍然是这些 UDF 必须在初始调用后触发以更新值
  • 您可以将函数设置为Volatile,这样每次计算时都会计算。 (或者有时我将Now() 的虚拟变量传递给函数以实现相同的目的 - 所以=Foo(Now()) 作为公式,Public Function Foo(d As Date) As Integer 作为过程声明。[我通常只在我懒得做时才这样做编写适当的代码,例如快速而讨厌的一次性任务。])
  • 虽然这对于这个问题来说无疑是一个可行的解决方案,但我仍然不得不指出volatile UDFs 会严重降低 Excel 文件的性能。此外,您可能想通读这篇文章:stackoverflow.com/questions/24353506/…
猜你喜欢
  • 2015-06-07
  • 2011-12-06
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 2020-10-10
相关资源
最近更新 更多