我目前复制的工作表包含工作簿和特定于工作表的命名范围。 特定于工作表的引用必须是它们的方式,工作簿需要被硬编码。 我正在寻找一种方法来固定包含外部参考的每个命名范围。
我目前的代码看起来像这样,但它并不是我所追求的:
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
我找不到合适的方法来固定这些值。它现在的工作方式,在某种程度上完成了工作,但我更喜欢这些值是在单元格内正确转换而不仅仅是在命名范围内。
另一种选择是循环遍历所有单元格并查看它是否包含命名范围,但我认为这会耗费太多时间。
有没有办法更有效地做到这一点?
答案 0 :(得分:1)
而不是循环遍历单元格,如何像这样循环.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