こんにちは、Daniel (@daniel__blog) です。
Excelで、ブックから別ブックにシートのコピーや移動をしようとすると、以下のダイアログボックスが表示されることがあります。
これ、すっごい厄介ですよね。
以下のように、「はい」でも「いいえ」でも[閉じる]ボタンでも中々消えてくれません。
・「はい」を押しても
同じようなダイアログが何度も繰り返し表示され、数回「はい」を押した後にようやく消える。
・「いいえ」を押しても
「名前」が重複しているので「変更後の名前」を登録してください旨のダイアログが表示されるが、登録できても再度最初のような「名前 ’<文字列>’ はすでに存在します。〜」ダイアログが表示されます。
・[閉じる]ボタンを押しても
「いいえ」を押したときと同じ動作になるだけです。
結局、出てしまったら「はい」を押して進めるしかない。。。
この問題の原因と解決方法をご紹介します。
原因
不要な「名前の定義」が残っているため
Excelの機能に「名前の定義」というものがあります。ここに「名前」が登録されていて、シートコピー時にコピー先にもコピーしようとします。
しかし、名前の付いていたセルが、列や行の削除などで無くなってしまう場合があります。そして「名前の定義」だけが残っている状態となり、これが原因であのダイアログが出てしまうようです。
「名前の定義」とは?
セルの範囲に「名前」を付ける事ができる機能です。セル参照や数式に名前を定義することで、複数シートにまたがる計算などを行う際に、付けた名前を数式で使用することができるようになります。
解決方法
「名前の定義」を削除する
Ctrl + F3を押します。すると、「名前の管理」ウィンドウが表示されます。
ここに「名前」が登録されていたから、シートコピー時にダイアログが表示されてしまっていたというわけです。
「名前」を選択して、「削除」をクリックします。
「名前<○○○>を削除しますか?」と表示されるので、「OK」ボタンをクリックします。
「名前の管理」ウィンドウを「閉じる」ボタンをクリックして閉じます。
解決しない場合は、非表示の「名前の定義」があるかも
上記の解決方法を試して「名前の定義」に登録されているもの全てを削除したのに、問題が解消されない場合があります。
それは非表示の「名前の定義」があるからかも…
非表示の名前を表示させて、再度「名前の管理」から削除する必要があります。
Alt + F11 を押します。
「Microsoft Visual Basic for Applications」ウィンドウが開きます。
プロジェクト内の「ThisWorkbook」をダブルクリックします。すると、コードを書き込める画面が表示されます。
以下のコードを貼り付けます。
Sub DisplayName()
Dim name As Object
For Each name In Names
If name.Visible = False Then
name.Visible = True
End If
Next
End Sub
貼り付けたらウィンドウを閉じます。
画面上部の「実行」-「マクロの実行」をクリックします。
「ThisWorkbook.DisplayName」というマクロ名を選択し、「実行」ボタンをクリックします。
※必要に応じて、ここで先ほどのマクロは削除してください。
「実行」-「マクロの実行」の一覧画面から「削除」ボタンを押すことで削除できます。
「Microsoft Visual Basic for Applications」ウィンドウを閉じます。
ここから先は 「名前の定義」を削除する と同じ手順です。
非表示の名前があれば、隠れていたものが出力されるはずです。
今回は以上です!