Excelの名前定義は便利なのか、それとも事故の元なのか

Excel VBA

Excelの名前定義は便利なのか、それとも事故の元なのか

Excelには、

セルや範囲に名前を付ける

名前定義

という機能があります。

例えば、

B2セルに「入力日」、

C5セルに「担当者名」、

A1:D20の範囲に「入力範囲」

のような名前を付けることができます。

数式やVBAから意味のある名前で参照できるので、

うまく使えば便利です。

しかし、

業務用Excelや配布用Excelでは、

名前定義が原因で、

参照エラーや外部リンク警告が出ることもあります。

名前定義は便利ですが、

管理しないと事故の元にもなります。


結論:名前定義は便利だが、管理しないと事故る

まず結論です。

名前定義は、

よく使うセルや範囲に意味のある名前を付けられる便利な機能です。

ただし、

名前定義はシート上に直接見えるものではありません。

そのため、

増えすぎると、

どこを参照しているのか分かりにくくなります。

実務配布用Excelでは、

  • 少数の重要セルに限定して使う
  • 不要な名前定義を残さない
  • 外部参照がないか確認する
  • 名前定義の用途を管理する

ことが重要です。

迷ったら、

名前定義に頼りすぎず、

設定シートや明示的なセル参照も検討した方が安全です。


名前定義のメリットと注意点

観点 メリット 注意点 実務での判断
固定セル参照 セル番地より意味が分かりやすい 名前が増えると追いにくい 少数の重要セルなら有効
数式での利用 数式の意味が読みやすい 参照切れに気づきにくい 管理できる範囲で使う
VBAからの参照 固定セルを名前で呼べる 名前が存在しないとエラーになる 存在確認や管理ルールが必要
配布用Excelでの管理 設計意図を表現できる 外部参照・不要名が残ると事故る 配布前に棚卸しする

名前定義は、

少数なら便利です。

しかし、

大量に増えたり、

使途不明な名前が残ったりすると、

一気に保守が難しくなります。


名前定義とは

名前定義とは、

セルや範囲に名前を付けるExcel標準機能です。

例えば、

B2 セルに

入力日

という名前を付けると、

数式やVBAからその名前で参照できます。

セル番地だけで書くよりも、

意味が分かりやすくなるのが利点です。

例えば、

=入力日

のような数式にすれば、

=B2

よりも意味が伝わりやすくなります。

VBAでも、

名前を使ってセルや範囲を参照できます。


名前定義が便利な場面

名前定義が便利なのは、

少数の重要セルや固定範囲を扱う場合です。

例えば、

  • 設定値セルを分かりやすく参照したい
  • 数式内でセル番地ではなく意味名を使いたい
  • VBAから固定セルを参照したい
  • 入力範囲やマスタ範囲を名前で管理したい
  • 少数の重要範囲だけを明示したい

といった場面です。

例えば、

設定シートのB2セルが処理対象年月なら、

target_month

のような名前を付けると、

意味は分かりやすくなります。

セル番地だけを見ても意味が分からない場合には、

名前定義が役立ちます。


名前定義が事故の元になる場面

一方で、

名前定義は事故の元にもなります。

よくあるのは、

次のようなケースです。

  • 名前が多すぎて何を指しているか分からない
  • 使っていない名前定義が残っている
  • 外部ブック参照が残っている
  • シートコピーで名前定義が増殖する
  • 削除したシートやセルを参照している
  • 他人が見たときに名前定義の存在に気づかない

特に怖いのは、

外部ブック参照が残っているケースです。

配布先でファイルを開いたときに、

外部リンクの警告が出たり、

参照先が存在しないことでエラーになったりします。

作った本人は気づいていなくても、

配布先で問題になることがあります。


実務配布で怖いのは見えない参照

名前定義の一番怖いところは、

見えにくいことです。

通常のセル参照であれば、

シート上を見ればある程度分かります。

しかし名前定義は、

「名前の管理」を開かないと存在に気づきにくいです。

そのため、

  • 誰が作った名前なのか分からない
  • 何のための名前なのか分からない
  • どこで使われているのか分からない
  • 削除してよいのか分からない

という状態になりがちです。

自分だけが分かる名前定義は、

後から保守する人にとって地雷になることがあります。


コピペで試せる名前定義の確認コード

次のコードは、

ブック内の名前定義を一覧表示するためのサンプルです。

A列に名前、

B列に参照先を書き出します。

このコードは、

標準モジュールに貼って、テスト用のxlsmで実行してください。

ご注意

以下のVBAコードは、動作イメージを確認するためのサンプルです。
実行前に必ずExcelファイルのバックアップを作成してください。
業務で使用しているファイルに、いきなり貼り付けて実行しないでください。
Excelのバージョンや設定により、動作が異なる場合があります。

Sub ListDefinedNames()

    Dim nm As Name
    Dim ws As Worksheet
    Dim rowIndex As Long

    Set ws = ThisWorkbook.Worksheets(1)

    ws.Range("A1").Value = "名前"
    ws.Range("B1").Value = "参照先"

    rowIndex = 2

    For Each nm In ThisWorkbook.Names
        ws.Cells(rowIndex, 1).Value = nm.Name
        ws.Cells(rowIndex, 2).Value = nm.RefersTo
        rowIndex = rowIndex + 1
    Next nm

    MsgBox "名前定義の一覧を書き出しました。", vbInformation

End Sub

このコードでは、

ThisWorkbook.Names

を使って、

ブック内の名前定義を順番に確認しています。

ファイル削除、

上書き保存、

外部通信などは行いません。

ただし、

A列・B列へ書き込みます。

必ずテスト用ファイルで試してください。


VBAで名前定義を使う場合の注意点

VBAから名前定義を使うと、

意味のある名前でセルを参照できます。

これは便利です。

ただし、

名前が存在しない場合はエラーになります。

また、

名前定義に外部参照が混ざっていると、

意図しない挙動になることがあります。

配布用Excelで名前定義を使う場合は、

少なくとも次の点を確認した方がよいです。

  • その名前定義は本当に必要か
  • 参照先は正しいか
  • 外部ブックを参照していないか
  • 削除済みシートを参照していないか
  • 後から見た人が意味を理解できる名前か

名前定義を使う場合でも、

設定シートや管理表と併用すると安全です。


実務ではどう使うべきか

実務用Excelでは、

名前定義は限定的に使うのが無難です。

おすすめは、

少数の重要な設定セルだけに使うことです。

例えば、

  • 処理対象年月
  • 出力フォルダ
  • 入力範囲
  • 設定値
  • マスタ範囲

などです。

逆に、

何でも名前定義にしてしまうと、

管理が難しくなります。

名前定義は便利ですが、

増やしすぎると見えない参照が増えます。

配布用Excelでは、

後から他人が見ても分かる状態を保つことが重要です。


配布前に確認したいこと

配布用Excelを作る場合は、

名前定義を棚卸しした方が安全です。

確認したいのは、

次のような点です。

  • 不要な名前定義が残っていないか
  • 外部ブックを参照していないか
  • 参照エラーになっていないか
  • シートコピーで増殖した名前がないか
  • 意味不明な名前が残っていないか
  • 名前の用途が説明できるか

名前定義は、

作った本人が忘れることもあります。

配布前に一度確認するだけでも、

トラブルを減らせます。


名前定義に頼りすぎない

名前定義は便利ですが、

すべてを名前定義で管理する必要はありません。

場合によっては、

設定シートに項目名と値を並べておく方が、

後から見た人には分かりやすいこともあります。

例えば、

項目
出力フォルダ output
最大件数 10
テンプレート名 template.xlsx

のような形です。

このように見える形で管理すれば、

名前定義を知らない人でも確認できます。

実務配布用Excelでは、

便利さよりも、

後から確認できることが大事です。


まとめ

名前定義は、

セルや範囲に意味のある名前を付けられる便利な機能です。

少数の固定セルや設定値に使うなら有効です。

しかし、

管理しないと事故の元になります。

特に、

  • 大量の名前定義
  • 使途不明な名前
  • 外部ブック参照
  • 参照エラー
  • シートコピーで増殖した名前

には注意が必要です。

配布用Excelでは、

名前定義を使うなら管理する。

不要な名前定義は残さない。

外部参照がないか確認する。

このあたりが重要です。

迷ったら、

名前定義に頼りすぎず、

設定シートや明示的なセル参照も検討すると安全です。


関連記事

  • Excelの入力規則とVBAチェックはどっちで制御すべきか
  • Excel VBAでRangeとCellsはどっちを使うべきか
  • Excel VBAでThisWorkbookとActiveWorkbookは何が違うのか

維持DXノートについて

維持DXノートでは、

建設コンサル実務で使うExcel/VBAや、

橋梁点検調書作成支援ツールの開発メモを公開しています。

Excel作業の自動化や、

帳票作成の手間を減らす考え方を、

実務目線で整理しています。


関連する無料Excelツール

維持DXでは、

橋梁点検・維持管理業務向けのExcel VBAツールを無料公開しています。

  • 橋梁点検調書の作成支援ツール
  • 評価結果一覧作成ツール
  • 旧様式から2024様式への移行支援ツール
  • 成果整合確認ツール

いずれも、

実務で発生しやすい

  • 転記作業
  • 写真貼付
  • 一覧作成
  • 旧成果移行
  • 整合確認

の負担を減らすための補助ツールです。

以下のフォームにメールアドレスを入力すると、

ダウンロードURLを自動返信メールでお送りします。

    お名前(任意)

    メールアドレス(必須)

    会社名・所属(任意)

    ご関心のある内容(任意)

    ご相談内容(任意)

    ご注意

    ダウンロードURLは、入力いただいたメールアドレス宛に自動返信で送信されます。

    ダウンロードしたExcelでマクロが実行できない場合は、

    右クリック → プロパティ →「許可する」 をチェック後、再度開いてください。

    (Windowsのセキュリティ機能により初回実行時にブロックされる場合があります)

    コメント