首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法删除excel名称管理器中引用已删除工作簿中某个区域的命名区域

无法删除excel名称管理器中引用已删除工作簿中某个区域的命名区域
EN

Stack Overflow用户
提问于 2019-12-27 03:58:29
回答 2查看 2K关注 0票数 0

我一年多前就删除了工作表,所以我无法恢复它,而且无论如何也不需要它。我现在正在尝试清除名称管理器中引用已删除工作表中的范围的名称。但是,编辑和删除按钮将呈灰色显示。无效路径显示在RefersTo输入栏中。值列有#Ref!我尝试了下面的代码来遍历这些名称,以查找那些值为#Ref!并删除它们,但它没有删除这些名称。..。

代码语言:javascript
复制
 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

..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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。因此,下面的宏从当前工作簿中删除了该已删除工作簿(和工作表)范围内的所有名称

代码语言:javascript
复制
...
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
...
票数 0
EN

Stack Overflow用户

发布于 2019-12-27 04:43:23

这就是我用来删除有错误的命名范围的方法。确保它正常工作,然后取消对nName.Delete的注释。如果你有一些改进的想法,那就做一个Pull Request here

代码语言:javascript
复制
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 Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59492908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档