リチャードは、彼がしばらく使用しているワークブックを持っており、その中にはかなりの数の名前(名前付き範囲、名前付き数式など)があります。彼はそれらの名前を取り除きたいので、まったく使用されていない名前を見つける簡単な方法があるかどうか疑問に思います。

これらの未使用の名前を取り除く組み込みの方法はありません。ただし、トリックを実行するマクロを作成することはできます。これは、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コレクションのすべての要素をステップスルーし、各名前を検索します。名前が見つからない場合は、名前が削除されます。マクロが完了すると、ブックから削除された名前を一覧表示するメッセージボックスが表示されます。

ただし、RidOfNamesマクロには問題があります。名前が使用されている可能性があるかどうかはどこでもチェックされません。たとえば、名前がマクロで参照されているかどうか、またはブック内の他のワークシート(非表示のワークシートを含む)で使用されているかどうかは判別されません。また、特定の名前が条件付き書式ルールで使用されているか、グラフ、ドロップダウンリスト、その他のオブジェクトで使用されているかを確認しません。欠点はありますが、RidOfNamesは、他のマクロ(これ以外)がなく、ほとんどのデータが1つのワークシートに含まれている単純なブックで驚異的に機能します。

独自のマクロを作成したくない場合は、Jan KarelPieterseによる無料のアドインを使用することを選択できます。 Name Managerと呼ばれるこのアドインを使用すると、ネイティブのExcelよりも名前を適切に管理できます(何を推測しますか?)。それが提供する機能の1つは、不要になった名前を取り除く機能です。アドインはここにあります:

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

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(10998)は、Microsoft Excel 2007、2010、および2013に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、 linkFinding UnusedNamesにあります。