我有一个工作簿,其中有许多要重命名的命名范围。我有一个包含旧名称和新名称的电子表格。
这有效:
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
循环由你决定。 :) 让我们知道这是否有帮助。
关于excel - 重命名命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21443737/