その「名前」、実はファイルの肥大化やエラーを引き起こす原因になります。
Excelの作業中に、「移動またはコピーしようとしている数式またはワークシートには、移動先のワークシートに既にある名前 ‘○○’ が含まれています」という警告が表示されて、イライラしたことはありませんか?
この原因の多くは、過去の担当者が設定した「定義された名前」がそのまま残っていることです。
数個程度であれば手動で削除できますが、これが200個、300個となると、手作業では日が暮れてしまいます。
実は、Excelには数万個の名前を定義できますが、増えすぎるとファイルの動作が重くなり、最悪の場合はファイルが壊れる原因にもなります。
今回はそんなやっかいな大量の名前を一瞬で削除できる便利なVBA(マクロ)のコードをご紹介します。これを使えば、100個の名前削除もわずか1秒で完了します。
コピペでOK!全名前を一括削除するマクロ
以下のコードを、Excelの「標準モジュール」に貼り付けて実行するだけです。
Sub DeleteAllNames()
Dim nm As Name
Dim count As Long
count = 0
' 確認メッセージ
If MsgBox("ブック内のすべての名前を削除しますか?", vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
' 全ての名前をループして削除
On Error Resume Next ' エラー(削除できない名前)をスキップ
For Each nm In ThisWorkbook.Names
nm.Delete
count = count + 1
Next nm
On Error GoTo 0
MsgBox count & "個の名前を削除しました!", vbInformation
End Sub
使い方:3ステップで完了!
プログラミング初心者の方でも、以下の手順通りに進めれば大丈夫です。
- Excelで [Alt] + [F11] を押して、VBAの画面を開きます。
- メニューの [挿入] → [標準モジュール] をクリックします。
- 出てきた白い画面に、上のコードを コピー&ペースト して、[F5] キーを押してください。
なぜ「名前の削除」が必要になるのか?
Excelの「名前」は本来、特定のセル範囲に「売上合計」などの名前をつけて計算をわかりやすくするための便利な機能です。
しかし、古いファイルを使い回したり、外部からデータを貼り付けたりするうちに、目に見えない不要な「隠し名前」まで蓄積されてしまいます。名前の定義が増えすぎると予期しない動作の原因になりかねません。
もちろん「特定の名前だけ残したい」という場合は、その名前を削除対象から外すカスタマイズも可能になります。
ぜひ業務効率化にお役立てください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント