【发布时间】:2020-01-21 23:34:14
【问题描述】:
我有一个包含许多要重命名的命名范围的工作簿。我有一个包含旧名称和新名称的电子表格。
这行得通:
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 公式的单元格,该公式根据其他列中包含的其他几条信息创建新的范围名称。
【问题讨论】:
-
rngNamedRanges变量中有什么内容?你在哪里声明的? -
为我工作(在填写了一些缺失的代码之后)
-
rngNamedRanges.Cells(1, 8).Value2的值是多少希望和rngNamedRanges.Cells(1, 6).Value2不一样? -
@SiddharthRout:真的很有趣。 :P
-
@BK201:我问这个的原因是因为像蒂姆一样,它也适用于我......如果用户没有收到任何错误消息,那么我想到的唯一可能性是他们是一样的。