【问题标题】:How to retrieve cell addresses which call specific function如何检索调用特定函数的单元格地址
【发布时间】:2011-01-19 04:25:41
【问题描述】:

我需要找出调用了特定函数的单元格地址。

如果我的函数是 MyFunction (arg1, arg2), 我应该能够使用名称“MyFunction”找到单元格地址。

请帮助我找出最有效的方法。

谢谢

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您可以遍历一系列单元格,寻找特定的功能:

    Dim name as String
    Dim searchRange as Range
    Dim row as Integer
    Dim col as Integer
    
    name = "MyFunction" ''// for example
    Set searchRange = Range("A1:P:50") ''// for example
    
    For row = 1 to searchRange.Rows.Count
      For col = 1 to searchRange.Columns.Count
        If Left(searchRange.Cells(row, col).Formula, Len(name)) = name Then
          ''// do something with this cell
        End If
      Next col
    Next row
    

    【讨论】:

    • +1 以获得良好的答案并欺骗 Markdown 以正确处理 VBA cmets :-)
    • 感谢您的回答,因此我发现 Excel Find() 比循环更有效。参考:ozgrid.com/VBA/find-method.htm
    • @nimo:这是一个很好的发现。为什么不将其发布为答案,然后将其标记为已接受?回答你自己的问题没有错:)
    • @Adam Bernier:谢谢。那些单引号 VBA cmets 很棘手! :)
    • 如果从多个单元格调用函数会发生什么?我认为这个问题提供了更好的答案(使用 Application.Caller):Cell from which a VBA Function is called
    【解决方案2】:

    我问了the same question,但措辞不同,所以我搜索时没有找到这个。

    有趣的是,我认为我得到的答案比循环的更好,原因有两个:

    1. 更快 - 没有循环。只需使用 Application.Caller
    2. 如果您的函数从多个单元格调用,则有效

    【讨论】:

    • 正如我在 cmets 中对我自己的回答所指出的那样,我认为 OP 正在寻找不同的东西。无论哪种方式,为链接 +1,因为我没有听说过 Application.Caller,我相信它有一天会派上用场。
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 2013-09-07
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2011-01-16
    • 2018-06-11
    • 2014-01-06
    相关资源
    最近更新 更多