0

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

我当前的代码看起来像这样,但这并不是我真正想要的:

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

我找不到正确固定值的方法。现在完成的方式在某种程度上可以完成这项工作,但我希望值在单元格内正确转换,而不仅仅是在命名范围的基础上。

另一种选择是遍历所有单元格并查看它是否包含命名范围,但我认为这太耗时了。

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

4

1 回答 1

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
于 2015-03-23T20:53:49.177 回答