Excelでシートをコピーしようとした時、既にある名前がと出るとき

前回に引き続き、Microsoft OfficeExcel 2003ネタ。
以下に書いてあることは、名前の定義がなんてされてないのに何故かエラーが出るとかいう現象への対処方法。

名前の定義なんかされてないのにエラーが出る

エクセルでシートをコピーしようとしたときに

移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前 'なんとかかんとか' が含まれています。この名前を使用しますか?
・コピーまたは移動先のシートに定義されている名前を使用する場合は、[はい]をクリックします。
・数式またはワークシートで参照する範囲の名前を変更する場合は、[いいえ]をクリックし、[名前の重複]ダイアログボックスに新しい名前を入力します。

とかいうダイアログが出てくることがあって、実際「挿入」→「名前」→「定義」を選んで「名前の定義」ダイアログボックスを出すと

「既にある名前 'なんとかかんとか'」はそこにはなく、あれどうなってんのこれって現象。


「名前の定義」でちゃんと名前が出ていて、ちゃんとわけありで登録してあるヤツで、これを削除せずに、でもエラーメッセージもなしにコピーしたい
という場合はちゃんと対処方法がMicrosoftで紹介されているのでこちらを参照のこと。

マイクロソフト サポート オンライン
Excel 2000、Excel 2002 で同じ名前を定義してあるシートをコピーするとエラーが発生する
http://support.microsoft.com/kb/409329/ja

このケースでは、上のエラーメッセージには「AAという名前が含まれています」と表示されているのに、名前の定義には
「AA」という項目は存在しない。でもコンピュータはその名前があるっていう。
ちなみに文字化けした変なのが出ているが、これはこの現象とはおそらく直接関係ない。

対処方法

実はバグって表示されていないだけらしくて、これを表示できるようにするマクロを作ってくださっている方がいる。

crazycat
Excelの見えない名前定義を削除する方法
http://crazycat.jp/?p=31

Excelを起動して、ツール→マクロ→Visual Basic Editorと選択して
挿入→標準モジュール→コードをペースト→F5キーぽちっとでOK(だったはず)


上記ブログにコードが記載されているんだけど、もし消えちゃったら悲しいのでここに引用しておく。

Public Sub DeleteNames()
Dim wName As Object
Dim wCnt As Long

For Each wName In Names
If wName.Visible = False Then
wName.Visible = True
wCnt = wCnt + 1
End If
Next
If wCnt <> 0 Then
MsgBox wCnt & "個の名前定義が見つかりました。",vbInformation
Else
MsgBox "非表示の名前定義はありません。",vbExclamation
End If
End Sub

これとは別に、文字化けした名前の定義が入っていて削除できないパターンでは別のことをやらないと消えなかったような気がしたが
やり方を失念・・・


する前にメモっとけばよかった。