エクセルを使っていて、割と多く出るのがエクセルのシートをコピーした時のエラー。
『移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’○○○’が含まれています。この名前を使用しますか?』
または、『同じ名前がリンク先のシートに定義されています』というメッセージが表示されることもあります。
この警告メッセージは、『セルの範囲を定義している名前』の参照先がおかしくなっている場合に、よく出ます。
これの一番の問題が、「はい」を選んでも「いいえ」を選んでも定義されている名前の分だけ、ひたすらダイアログを閉じる操作を延々としないといけないこと。
下手すれば何十回、何百回と繰り返されることもあるので、この重複警告メッセージが出た時に『あーまた何回もキーボード叩かないといけないんだ』とモチベーションが下がる人もいると思います。
今回は、名前重複の警告メッセージが出ないようにする方法を紹介します。
シートコピーで「名前重複の警告」を出さないようにする
さっそく、恐怖の警告メッセージ(既にある名前が含まれています)が出ないようにする方法を紹介します。
やることは、『名前の管理で参照エラーになっている名前を削除する』だけ。
名前というのは、下の画像のように『セルの場所(範囲)につけられる名前』のことです。
では、シートコピーエラー(名前重複警告)の対策方法です。
下の画像のエクセルは、『シートC(3)』をコピーしようとすると警告メッセージが出る状態です。
まず、名前の管理ダイアログを表示させます。
ショートカットキーだと『CTRL』+『F3』キー、アクセスキーでは『ALT』→『M』→『N』で名前の管理ダイアログが表示されます。
マウスではリボンの『数式』タブ→『名前の管理』とクリックしてください。
上記名前の管理のダイアログを見ると、一番上の名前以外全て参照エラー(#REF!)になっていることがわかります。
続いて、この参照エラーを削除していきます。
参照エラーとなっている行を選択して、「削除」ボタンを押します。
削除できたら『閉じる』を選択。
これで、今後コピーしても名前重複の警告メッセージが出ないようになります。
『名前の管理』に名前が表示されない場合の対応
普通は、名前の管理に『定義されている名前』は全て表示されますが、まれに表示されないことがあります。
この場合は、マクロ(VBA)で名前を非表示にしていることがあります。
なので、名前を表示させるマクロ(VBA)を利用します。
名前を表示させるマクロ(VBA)で名前を表示させる
では、名前を表示させるマクロの実行方法を紹介します。
まず、エクセルを開いた状態で、マクロのエディター(VBAエディター)を『ALT』+『F11』のショートカットキーで表示させます。
次に、名前を表示させるVBAコード実行用の標準モジュールを追加します。
メニューの『挿入』→『標準モジュール』(アクセスキーは『ALT』→『I』→『M』)
次に、赤枠のコード領域に『名前を表示させるマクロ(VBA)コード』を丸々コピー&ペースト。
↓このコードをコピー(名前を表示させるマクロ(VBA)コード)
Public Sub ShowName() Dim targetName As Object For Each targetName In Names If targetName.Visible = False Then targetName.Visible = True End If Next MsgBox "名前管理で表示できるようにしました。", vbOKOnly End Sub
コードを書き込んだので、『CTRL』+『S』で保存。
『はい』を選択
本来は、マクロを含む形式の拡張子『.xlsm』で保存すべきですが、一時的にマクロを使いたいだけなので、『マクロなしのブックとして保存する』を選択します。
ただし、エクセルを開いている間はマクロの実行は可能ですが、エクセルを保存してもマクロは保存されないので注意してください。
マクロ(VBA)を使う時の警告なので、『はい』を選択
VBAエディターを一旦閉じます。(『ALT』+『F4』キーか、右上の☓マークを押す)
では、マクロ(VBA)を実行させてみます。
リボンタブの『表示』→『マクロ』→『マクロの表示』か、アクセスキーだと『ALT』→『W』→『M』→『V』
追加したマクロの名前(ShowName)を選択して『実行』をクリック。
マクロ(VBA)の実行が完了したので、『OK』を選択
これで、『CTRL』+『F3』で『名前の管理』を確認すると、名前が表示されるようになります。