gpt4 book ai didi

excel - MS-Excel : Retrieve Row Number where VBA Function is located

转载 作者:行者123 更新时间:2023-12-04 20:50:12 25 4
gpt4 key购买 nike

我希望我在正确的论坛上问这个:
我正在用 VBA 为 MS-Excel 编写 UDF;它基本上为该行上的事务构建状态消息。它逐步执行一系列 IF 语句,评估该行不同列中的单元格值。
但是,此 UDF 将驻留在多行中。所以它可能在 C12、C13、C14 等中。UDF 如何知道要使用哪一行?我正在尝试这样的事情,没有效果

Tmp_Row = Application.Evaluate("Row()")
这似乎返回一个空
我在这里想念什么?
提前感谢大家

最佳答案

Application.Caller很少使用,但是当 UDF 需要知道是谁调用它时,它需要知道 Application.Caller .
除了,您不能只假设函数是从 Range 调用的。 .所以你应该使用 TypeOf...Is 来验证它的类型。运算符(operator):

Dim CallingCell As Excel.Range
If TypeOf Application.Caller Is Excel.Range Then
'Caller is a range, so this assignment is safe:
Set CallingCell = Application.Caller
End If

If CallingCell Is Nothing Then
'function wasn't called from a cell, now what?
Else
'working row is CallingCell.Row
End If
建议:使函数以它的依赖单元为 Range参数(如果您需要 Range 元数据;如果您只需要这些值,则使用 DoubleDateString 参数),而不是让它从工作表中获取值。这将工作表布局与函数的逻辑分离,从而使其更加灵活和易于使用 - 如果/当工作表布局发生变化时,不需要任何调整。

关于excel - MS-Excel : Retrieve Row Number where VBA Function is located,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66015928/

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