Excel VBA硬编码中的每个命名范围

我目前复制一个工作表,其中包含工作簿和工作表特定的命名范围。 工作表特定的引用需要是它们的方式,工作簿需要被硬编码。 我正在寻找一种方法来修复每个包含外部引用的命名区域。

我目前的代码看起来像这样,但它不是真正的我:

Sub HardcodeValuesInExternalNamedRanges(wb As Workbook, ws As Worksheet) Dim namCur As Name For Each namCur In wb.Names If (InStr(1, namCur.RefersTo, ThisWorkbook.Name) > 0) Then namCur.RefersTo = "=" & ws.Evaluate(namCur.RefersTo) End If Next namCur End Sub 

我无法find正确固定值的方法。 现在做的方式,在一定程度上做这项工作,但我宁愿如果在单元格内正确转换的值,而不是在一个命名的范围内。

另一个select是遍历所有的单元格,看看它是否包含一个命名的范围,但我认为这太耗时。

有没有办法更有效地做到这一点?

而不是循环通过单元格,如何循环一个.FindNext像这样?

 Do rng.Value = rng.Value 'Hardcodes the value Set rng = .FindNext(What:=ThisWorkbook.Name Lookin:=xlFormulas) 'finds the next Value to be hardcoded Loop While Not Rng Is Nothing