我想在Excel文档的vba代码中声明变量并在单元格中使用它。声明VBA变量并在Excel的工作表中使用它
事情是这样的:
VBA代码:
Dim foo as Integer
foo = 2
Excel单元格(任意)
=foo
这可能吗?
我想在Excel文档的vba代码中声明变量并在单元格中使用它。声明VBA变量并在Excel的工作表中使用它
事情是这样的:
VBA代码:
Dim foo as Integer
foo = 2
Excel单元格(任意)
=foo
这可能吗?
您可以在代码模块
Public Function Foo() As Integer
Foo = 2
End Function
声明公用函数在某小区
=Foo()
:)伟大的思想和所有这一切。问题仍然是这些UDF必须在初始调用后触发以更新值 – Zac
您可以将函数设置为“易失性”,以便在每次执行计算时计算它。 (或者有时我将'Now()'的虚拟变量传递给函数来实现同样的事情 - 所以'= Foo(Now())'作为公式,'Public Function Foo(d As Date)As Integer'作为程序声明[我通常只会在我懒得写出正确的代码时才这样做,例如一个快速而肮脏的一次性任务。]) – YowE3K
虽然这对于这个问题来说当然是一个可行的解决方案,但我仍然觉得不得已指出[volatile UDF](https://msdn.microsoft.com/en-us/library/office/bb687891.aspx#sectionSection2)会严重降低Excel文件的性能。此外,你可能想阅读这篇文章:https://stackoverflow.com/questions/24353506/non-volatile-udf-always-recalculating – Ralph
不使用它,除非你想使用[无模式]的(HTTPS那是不可能的://stackoverflow.com/a/16860597/1153513)和可能不可见的'userform'。您只能在表格中存储值(如果需要,可以隐藏它们)。单元格可以用作命名范围,然后可以使用'= foo'来引用它们。然而,价值必须在一个单元格中(再次)。 – Ralph
好的。非常感谢你! –
你有点儿可以。如果你在一个模块中创建一个'Public' UDF,那么你就可以从你的单元调用这个UDF,就像调用其他任何函数一样......也就是说你的模块中有一个名为'GetFoo'的UDF。在你的单元格中输入'= GetFoo()',你的单元格将显示你的UDF返回的值。您的问题在于,只有在您最初调用该功能时才会触发。如果你然后改变'GetFoo'中的返回值,单元格不会被更新,除非你再次触发它。 – Zac