更改命名范围参考
问题描述:
我正在处理一个具有生成子文件的宏操作的Excel文件。我被指示要做的是为某些领域创建选择列表。我在父文件中创建了一个新的参考表以容纳下拉值。然后我为这些列创建了命名范围。更改命名范围参考
的问题出现时,我执行子文件的导出操作。 “引用到”字符串更改为包含父文件的路径。我不希望这样,因为如果父母关闭,子文件中的选择列表功能会中断。
有没有办法阻止“是指”从通过出口过程中不断变化的字符串?收集所有选择列表信息的参考表格从父母到孩子复制。
我试过指细胞直接范围以及相同的结果:
如果主文件引用:=“外部参照” A2:A11 然后子文件指的是:=” [C:.... xlsm] Xref'!A2:A11
答
了解新工作簿是一个副本并包含所有名称,如原始文件,您只需运行一个For Each
循环(在源代码工作簿中用作宏):
Dim xName As Variant, wb As Workbook
Set wb = Workbooks("the child workbook")
For Each xName In ThisWorkbook.Names
wb.Names(xName.Name).RefersToR1C1 = xName.RefersToR1C1
Next
如果不是所有的名字都存在,只需使用On Error Resume Next
在循环:)
前如果您还有任何问题,只是问。
编辑 如果在新的WB存在不是所有的名字,那么这将是更好的/快(用作源工作簿宏):
Dim xName As Variant, wb As Workbook
Set wb = Workbooks("the child workbook")
For Each xName In wb.Names
xName.RefersToR1C1 = ThisWorkbook.Names(xName.Name).RefersToR1C1
Next
类似'= INDIRECT(“'外部参照'!A2:A11“,1)'会做什么? –
我看到了两种可能性:1)复制整个工作簿,然后创建孩子的任何东西,或者2)在新工作簿中查找并替换所有名称。 –
Dirk,谢谢你摆脱我的头痛,因为不得不整天和这个问题混淆! 您的方法适用于两种参考案例。我结束了与命名的范围选项。我输入= INDIRECT(“'Xref'!A2:A11”)。 – BarryMahnly