打开两个工作簿的Excel自定义项
我使用一个简单的excel自定义项将字符串作为公式计算打开两个工作簿的Excel自定义项,excel,vba,user-defined-functions,Excel,Vba,User Defined Functions,我使用一个简单的excel自定义项将字符串作为公式计算 Function Eval(Ref As String) Application.Volatile Eval = Evaluate(Ref) End Function 字符串存储在会计部维护的数据表中,我正在使用power query将其放入页边距表中。我的问题是,用户可能同时打开多个工作簿。有没有办法防止它尝试根据另一张表重新计算 我想得越多,我就越意识到我应该让他们将公式存储为
Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function
字符串存储在会计部维护的数据表中,我正在使用power query将其放入页边距表中。我的问题是,用户可能同时打开多个工作簿。有没有办法防止它尝试根据另一张表重新计算
我想得越多,我就越意识到我应该让他们将公式存储为公式,并使用“显示公式”按钮
但是我还是很想知道我的问题是否有答案。如果您想引用特定的工作簿,可以在引用中这样做:
Ref = "[WorkbookFileName.xlsm]" & Ref
或对于当前工作簿(这将解析为当前正在执行的宏的工作簿):
您也可以参考特定的工作表:
Ref = "SheetName!" & Ref
或
然后可以执行评估。您希望在调用函数的工作表的上下文中执行
评估
您可以使用应用程序.ThisCell.Parent
获取对该工作表的引用:
Eval = Application.ThisCell.Parent.Evaluate(Ref)
如果您是从一个单元格中调用此函数,请尝试
Eval=Application.ThisCell.Parent.Evaluate(Ref)
@BigBen-这很有效。谢谢。@BigBen:太有趣了。。。我对这个单元格一无所知。我一直在使用:Eval=Application.Caller.Parent.Evaluate(Ref)
@FaneDuru-yes,Application.Caller
是另一个approach@BigBen:我只是想强调一下,我从来没有听说过在这种情况下可以使用的ThisCell
。。。这并不意味着我没有听说过很多其他Excel问题。:)
Ref = "[WorkbookFileName.xlsm]SheetName!" & Ref
Eval = Application.ThisCell.Parent.Evaluate(Ref)