理查德有一本他已经使用了一段时间的工作簿,里面有很多名字(命名范围,命名公式等)。他想知道是否有一种简单的方法来查找根本不使用的名称,因为他想摆脱这些名称。

没有内置的方法可以摆脱这些未使用的名称。但是,您可以创建一个宏来为您解决问题。通过使用Find方法找出哪些名称具有可以“找到”的引用,最容易做到这一点。如果找不到引用,则该名称未使用。

Sub RidOfNames()

Dim myName As Name     Dim fdMsg As String

On Error Resume Next     fdMsg = ""

For Each myName In Names         If Cells.Find(What:=myName.Name, _           After:=ActiveCell, _           LookIn:=xlFormulas, _           LookAt:=xlPart, _           SearchOrder:=xlByRows, _           SearchDirection:=xlNext, _           MatchCase:=False, _           SearchFormat:=False).Activate = False Then             fdMsg = fdMsg & myName.Name & vbCr             ActiveWorkbook.Names(myName.Name).Delete         End If     Next myName     If fdMsg = "" Then         MsgBox "No unused names found in the workbook"

Else         MsgBox "Names Deleted:" & vbCr & fdMsg     End If End Sub

宏逐步遍历Names集合的所有元素,并搜索每个名称。如果找不到该名称,则删除该名称。宏完成后,它将显示一个消息框,其中列出了从工作簿中删除的名称。

如果您不想创建自己的宏,则可以选择使用Jan Karel Pieterse的免费加载项。名为“名称管理器”的加载项使您(猜测什么?)比使用本机Excel更好地管理名称。它提供的功能之一是能够删除不再需要的名称。您可以在这里找到加载项:

http://www.jkp-ads.com/OfficeMarketPlaceNM-EN.asp

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3312)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置为Excel的功能区界面(Excel 2007和更高版本)找到本技巧的版本: