Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6280|回复: 8

[已解决]求租:批量删除名称无法全部删除!!!

[复制链接]
发表于 2011-11-14 16:08 | 显示全部楼层 |阅读模式
本帖最后由 songxl0000 于 2011-11-14 16:08 编辑

这个文件的工作表里面有大量名称,在excelhome论坛请教了一下,用下面2段代码进行了批量删除,但是按住Ctrl拖动复制该工作表仍然提示有8个名称没被删除!!是不是这8个是隐藏名称的原因?请教各位高手指导一下是什么原因,最好能写一段全部删除的代码。
代码一:
Sub del_Name()
    On Error Resume Next
    Do
        For Each n In ThisWorkbook.Names
            n.Delete
        Next
    Loop Until ThisWorkbook.Names.Count < 18
End Sub

代码二:
Sub DelName()
   On Error Resume Next
   For Each Name In ThisWorkbook.Names
      Name.Delete
  Next
End Sub
最佳答案
2011-11-14 17:41
[原创]EXCEL秘密二则:删除非法定义名称和减肥

如何删除非法定义名称:有的文件由于删除或使用不同语言等等原因,使得里面含有的非法定义名称,有时因为表中还有很多公式等原因,重做一个比较麻烦,但又不能使用普通CTRL+F3再删除的方法,要命的是即使用VBA也不能删除,如附件,那怎么办?我们可以在菜单/工具/选项/常规里改变"R1C1 引用式样后按确定,EXCEL会提示你名称冲突,要求输入新的名称,其实冲突的名称就是那些非法的名称,你随便给它们取些名,以后就可以用CTRL+F3或VBA来删除了,需要注意的是,改变"R1C1 引用式样需要再进行一次,把另外类型的非法名称也找出来改名.有效减肥方法之一:论坛上已经有了一些减肥的方法,但这些方法可能对有些文件不适用,比如上面的那个文件, 其实还有一种方法,就是将XLS文件另存为后缀名是xml格式的文件,然后关掉EXCEL, 再打开那个xml文件,另存为xls 格式文件,文件的尺寸就能变小了.我回复过这样的问题,现在专门发贴,方便查找.




解决方法:
这是willin2000 的方法,我照着操作,可以删除1楼附件里所有名称。我也是学习的。为什么,请见上面的说明。


1)
Sub DelName2()
    Dim x
    On Error Resume Next
    For Each x In ThisWorkbook.Names
        x.Delete
    Next
    Debug.Print ThisWorkbook.Names.Count
End Sub

运行后,有17个删不掉

2)如果“在菜单/工具/选项/常规里改变"R1C1 引用式样后按确定,EXCEL会提示你名称冲突”没提示的话,再取消钩,就有提示了。

3)依次手工修改名称16次,把其中看得到那个,手工删除

4)再运行1),就可以删除这变了名的16个了,最后名称总数为0。 成本表7.rar (18.38 KB, 下载次数: 7)

成本表.rar

19.48 KB, 下载次数: 15

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-11-14 16:12 | 显示全部楼层
回复

使用道具 举报

发表于 2011-11-14 16:31 | 显示全部楼层
本帖最后由 wayy 于 2011-11-14 16:35 编辑

Sub DelName()
   On Error Resume Next
   For Each Name In ThisWorkbook.Names
      Name.Delete
  Next
End Sub

这个应该可以的。
回复

使用道具 举报

 楼主| 发表于 2011-11-14 16:39 | 显示全部楼层
3楼没看清楚我的问题哈,和那2段代码一样,不能全部删除所有名称。
回复

使用道具 举报

发表于 2011-11-14 16:39 | 显示全部楼层
出错的提示应该是与单元格地址有冲突的自定义名称,不是正确有自定义名称。
回复

使用道具 举报

发表于 2011-11-14 17:41 | 显示全部楼层    本楼为最佳答案   
[原创]EXCEL秘密二则:删除非法定义名称和减肥

如何删除非法定义名称:有的文件由于删除或使用不同语言等等原因,使得里面含有的非法定义名称,有时因为表中还有很多公式等原因,重做一个比较麻烦,但又不能使用普通CTRL+F3再删除的方法,要命的是即使用VBA也不能删除,如附件,那怎么办?我们可以在菜单/工具/选项/常规里改变"R1C1 引用式样后按确定,EXCEL会提示你名称冲突,要求输入新的名称,其实冲突的名称就是那些非法的名称,你随便给它们取些名,以后就可以用CTRL+F3或VBA来删除了,需要注意的是,改变"R1C1 引用式样需要再进行一次,把另外类型的非法名称也找出来改名.有效减肥方法之一:论坛上已经有了一些减肥的方法,但这些方法可能对有些文件不适用,比如上面的那个文件, 其实还有一种方法,就是将XLS文件另存为后缀名是xml格式的文件,然后关掉EXCEL, 再打开那个xml文件,另存为xls 格式文件,文件的尺寸就能变小了.我回复过这样的问题,现在专门发贴,方便查找.




解决方法:
这是willin2000 的方法,我照着操作,可以删除1楼附件里所有名称。我也是学习的。为什么,请见上面的说明。


1)
Sub DelName2()
    Dim x
    On Error Resume Next
    For Each x In ThisWorkbook.Names
        x.Delete
    Next
    Debug.Print ThisWorkbook.Names.Count
End Sub

运行后,有17个删不掉

2)如果“在菜单/工具/选项/常规里改变"R1C1 引用式样后按确定,EXCEL会提示你名称冲突”没提示的话,再取消钩,就有提示了。

3)依次手工修改名称16次,把其中看得到那个,手工删除

4)再运行1),就可以删除这变了名的16个了,最后名称总数为0。 成本表7.rar (18.38 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2011-11-15 09:57 | 显示全部楼层
爱疯的已经试了,行了,感谢各位,我会努力  
回复

使用道具 举报

发表于 2011-11-15 11:03 | 显示全部楼层
是受疯讲的那个原因,手工少删一点

Sub DelName()
    ' 1. 可以删除与单元格重名的名称,比如AA1等;
    ' 2. 但是还是有一个名称与不能通过VBA删除,只能通过界面手动删除,具体原因不明
    Dim nm As Name, sht As Worksheet
    Dim vRS As Variant

    vRS = Application.ReferenceStyle
    Application.ReferenceStyle = xlR1C1

    For Each nm In ThisWorkbook.Names
        nm.Delete
    Next nm

    Application.ReferenceStyle = vRS
End Sub
回复

使用道具 举报

 楼主| 发表于 2011-11-16 11:20 | 显示全部楼层
看了!一个字:高手!谢谢热心
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 10:27 , Processed in 0.810564 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表