【发布时间】:2017-03-31 08:35:54
【问题描述】:
考虑以下情况。我有一个名为“X.xlam”的 Excel 加载项文件,其中一个名为“Y”的模块包含一个名为“Z”的函数。加载项文件 X.xlam 在 Excel 中通过文件 > 选项 > 加载项 ...
启用X.xlam ; Excel add-in
`-- MODULES
`-- Y
`-- Z()
现在假设我打开了一个启用宏的 Excel 工作簿 M.xlsm,其中包含一个名为“A”的模块,该模块包含自己的名为“Z”的函数。 (我将其称为函数“Z”的“本地”版本。)
M.xlsm ; Excel macro-enabled workbook
`-- MODULES
`-- A
`-- Z() ; local function Z()
问题 1) 在工作簿 M.xlsm 中,如果我从工作表单元格中调用“=Z()”,Excel 默认会调用哪个函数“Z”? Excel 是在 X.xlam 中调用函数 Z(),还是在 M.xlsm 中调用函数 Z()? (如果有人能指出我在 Excel VBA 中很好地描述名称范围和名称解析的文档,那将不胜感激。)
问题 2) 在工作表单元格中调用 VBA 宏/函数时,例如“=Z()”,是否有一种范围解析语法可以用来显式调用一个或另一个函数“Z”(即、“本地”Z 还是外接程序“Z”)?
问题 3) 在启用宏的工作簿 M.xlsm 中,当工作表单元格调用函数“=Z()”时,Excel 默认调用加载项版本的“Z”。在文件 M.xlsm 中,如果我“断开链接”到加载项文件 X.xlam(Excel 功能区栏 > 数据选项卡 > 连接库 > 编辑链接按钮),这会破坏所有调用 '=Z 的工作表单元格()' => '#NAME?'。有没有办法让 Excel 在 X.xlam 中断开与函数 Z() 的链接,而在 M.xlsm 中调用 Z() 而不会破坏所有调用 '=Z()' 的工作表单元格?
【问题讨论】:
标签: vba excel excel-addins