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

时间:2014-07-25 19:36:41

标签: excel vba named-ranges

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

我目前的代码看起来像这样,但它并不是我所追求的:

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

我找不到合适的方法来固定这些值。它现在的工作方式,在某种程度上完成了工作,但我更喜欢这些值是在单元格内正确转换而不仅仅是在命名范围内。

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

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

1 个答案:

答案 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