我有一本工作簿,其中有许多要重命名的命名范围。我有一个包含旧名称和新名称的电子表格。
这有效:
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
循环取决于您。 :)让我们知道是否有帮助。