我有一本工作簿,其中有许多要重命名的命名范围。我有一个包含旧名称和新名称的电子表格。

这有效:

Dim strOldName As String
Dim strNewName As String

strOldName = rngNamedRanges.Cells(1, 6).Value2
strNewName = strOldName & "_Renamed"

With ActiveWorkbook.Names(strOldName)
    .Name = strNewName
End With


这不是:

Dim strOldName As String
Dim strNewName As String

strOldName = rngNamedRanges.Cells(1, 6).Value2
strNewName = CStr(rngNamedRanges.Cells(1, 8).Value2)

With ActiveWorkbook.Names(strOldName)
    .Name = strNewName
End With


显然,分配strNewName时我做错了。

我也尝试过使用.text.value并修整字符串,所有操作都具有相同的非结果。

无效的代码不会产生错误。它只是无法更改名称。

rngNamedRanges.Cells(1,6)是指包含纯文本的单元格。
rngNamedRanges.Cells(1,8)是指包含CONCATENATE公式的单元格,该公式根据其他列中包含的其他几条信息创建新的范围名称。

最佳答案

重命名始终很痛苦。请尝试以下操作:

Sub Rename()

    StrOld = "MyRange1"
    StrNew = StrOld & "_Renamed"

    Range(StrOld).Name = StrNew
    With ThisWorkbook
        .Names(StrOld).Delete
    End With

End Sub


循环取决于您。 :)让我们知道是否有帮助。

09-20 09:34