VBA:如何通过函数更改另一个单元格的值?

我是一个Excel VBA新手。

如何通过用户定义的函数更改指定单元格的值? 这个代码有什么问题:

Function Test(ByVal ACell As Range) As String ACell.Value = "This text is set by a function" Test := "Result" End Function 

我的愿望是…当我在单元格E1中键入=Test(E6)时,Excel将在E6中显示指定的文本。

Excel VBA将不允许用户定义的函数来更改另一个单元格的值。 UDF唯一允许做的事情(有一些小例外)是将值返回给它所调用的单元格。

VBA UDF可以用作数组函数将结果返回给多个相邻的单元格。 在E1和E2中input公式,然后按Ctrl-Shift-Enter创build一个多单元格arrays公式。 你的UDF看起来像这样:

 Public Function TestArray(rng As Range) Dim Ansa(1 To 2, 1 To 1) As Variant Ansa(1, 1) = "First answer" Ansa(2, 1) = "Second answer" TestArray = Ansa End Function 

为什么不在E6中input你的公式呢? 这就是Excel的逻辑:把你的公式放在想要显示结果的地方。