我一年多前就删除了工作表,所以我无法恢复它,而且无论如何也不需要它。我现在正在尝试清除名称管理器中引用已删除工作表中的范围的名称。但是,编辑和删除按钮将呈灰色显示。无效路径显示在RefersTo输入栏中。值列有#Ref!我尝试了下面的代码来遍历这些名称,以查找那些值为#Ref!并删除它们,但它没有删除这些名称。..。
Sub DeleteAllREFRanges()
Dim n As Name
For Each n In ActiveWorkbook.Names
If InStr(n.Value, "#REF!") > 0 Then n.Delete
Next n
End Sub..。
发布于 2019-12-27 09:35:37
感谢dwirony和Vityata的建议。我要删除的所有名称的作用域都是已删除工作簿中的特定工作表。通过使用调试,我看到n.Name以worksheet!name格式返回名称,例如,DonorSearch!CreativeServices,而n.Value和n.RefersTo都返回已删除工作表中的范围的完整路径。因此,我验证了当n.name包含单词n.name时,Instr(Instr,“included”)返回1。因此,下面的宏从当前工作簿中删除了该已删除工作簿(和工作表)范围内的所有名称
...
Sub DeleteAllREFRanges()
Dim n As Name
For Each n In ActiveWorkbook.Names
If InStr(n.Name, "Donor") > 0 Then n.Delete
Next n
End Sub
...发布于 2019-12-27 04:43:23
这就是我用来删除有错误的命名范围的方法。确保它正常工作,然后取消对nName.Delete的注释。如果你有一些改进的想法,那就做一个Pull Request here。
Public Sub RemoveNamedRangesWithErrors()
Dim nName As Name
Dim strNameReserved As String
On Error Resume Next
For Each nName In Names
Debug.Print nName.RefersTo
If Left(nName.RefersTo, 2) = "=#" Then
Debug.Print nName.RefersTo
'nName.Delete
End If
Next nName
On Error GoTo 0
End Subhttps://stackoverflow.com/questions/59492908
复制相似问题