如何在不使用Indirect的情况下创建特定于表单的命名范围?

时间:2014-03-03 12:50:52

标签: excel vba excel-vba excel-formula

我想出了一个有用的技巧,我使用以下公式创建一个引用当前工作表的命名范围:

=RIGHT(CELL("filename",INDIRECT("A1")), LEN(CELL("filename",INDIRECT("A1"))) - FIND("]",CELL("filename",INDIRECT("A1"))))&T(NOW())

只有INDIRECT才能阻止Excel转换A1 - > Sheet1!A1。这很有效,直到我需要从VBA调用它来评估它(确实发生了)。

任何人都可以告诉我如何(1)在VBA中评估具有此公式的名称,或者(2)如何在公式中获得表单非特定的引用。我宁愿不使用VBA,因为它将被评估~12000次,而且这可能会很慢,但如果需要,它可能还可以。但是,请记住,它计算的表格不太可能是ActiveSheet,因此VBA中Range()函数的上下文有点棘手 - 因此我要问的是第一名。

1 个答案:

答案 0 :(得分:1)

一种可能的方法:使用一个简单的UDF,它只返回它所调用的工作表的名称。

例如:

Function SheetName()
    SheetName = Application.Caller.Parent.Name
End Function