gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:00:17 25 4
gpt4 key购买 nike

我是 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 中显示指定的文本。

最佳答案

是的,当然,这是可能的。

enter image description here

将此代码放入 VBA 编辑器的 Module1 中:

Function UDF_RectangleArea(A As Integer, B As Integer)
Evaluate "FireYourMacro(" & Application.Caller.Offset(0, 1).Address(False, False) & "," & A & "," & B & ")"
UDF_RectangleArea = "Hello world"
End Function

Private Sub FireYourMacro(ResultCell As Range, A As Integer, B As Integer)
ResultCell = A * B
End Sub

此示例 UDF 的结果在另一个相邻单元格中返回。用户定义的函数UDF_RectangleArea根据其两个参数AB计算矩形面积,并将结果返回到右侧的单元格中。您可以轻松修改此示例函数。

使用VBA绕过了微软对功能的限制Evaluate功能。 Evaluate 只是从 UDF 内触发 VBA 宏。对单元格的引用由 Application.Caller 传递。玩得开心!

UDF 限制文档:https://support.microsoft.com/en-us/help/170787/description-of-limitations-of-custom-functions-in-excel

关于VBA:如何通过函数更改另一个单元格的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com