dポイントプレゼントキャンペーン実施中!

どうしてもわからないので質問させてください。

エクセル2007を使用していますが、
シートをコピーした際に、「名前の重複があるので、別の名前を指定してください」旨のポップアップが出てしまいます。
ただそのままOKを押せば、もちろんいいのですが、かなり多数名前の定義が残っている(これまで、ミスで定義した名前が累積している?)ようで、とても時間がかかります。
モチロン、名前の管理タブで名前をすべて削除してみました。それでも、名前の定義は残っているようで不思議です。

特定のシートをあるブック(違うブック)にシートコピーをする時はそういった現象は起こりませんが、その後そのブックに元からあったシートをコピー(同じブックへ)すると、同じ現象が起こります。
この場合も、元から「名前の管理」タブで定義の削除を行っているので、画面上では名前の定義は空のままです。

「名前の管理」タブでも削除できない定義があるのでしょうか?
また解決策はあるのでしょうか?

A 回答 (1件)

こんにちは。



Excel 2000、Excel 2002 で同じ名前を定義してあるシートをコピーするとエラーが発生する
http://support.microsoft.com/kb/409329/ja

Version は違いますが、ここに書いてある内容のことだと思います。

>そのままOKを押せば、もちろんいいのですが、

私は、あまり賛成できないのです。名前定義が構造的な配列になってしまうのではないかと思うのです。

>「名前の管理」タブでも削除できない定義があるのでしょうか?

それはあるのですね。名前定義の構造は、とても複雑なようです。調べてみると、アプリケーション・レベル、ワークブック・レベル、シート・レベルと三つの格納先があるようです。VBAでも削除できないものもあるようです。

最近、同様の質問はいくつかあるようですが、

VBAでエラーメッセージが出ないようにしたい
http://oshiete1.goo.ne.jp/kotaeru.php3?qid=4970298

これは、VBAですが、ここに解決のヒントがあるのですが、

#というように、Cells.Copy すればよいです。

と書かれてあるように、シートを挿入してから、Ctrl + A -> Ctrl + C で、コピー元のセル全体をコピーして、コピー先に、Ctrl + V で張り付ければよいはずです。

既存のものに関しては、マクロで削除するしかありませんね。ただし、削除できないものもあります。

フォームボタンなどに、マクロを設定してあげるとよいです。
ただ、以下のマクロは、一度では、名前は消えません。場合によって、シートの数だけ繰り返さないといけないかもしれません。

---------------------------------------------------------
'標準モジュール(Alt + F11 -->挿入 -->標準モジュール) 不要になったら、モジュールごと削除してください。

Sub TestMacro1()
  Dim i As Long
  Dim j As Long
  If ActiveWorkbook.Name <> ThisWorkbook.Name Then
    MsgBox "アクティブブックを、このブックにしてください。", vbInformation
    Exit Sub
  End If
  j = Application.Names.Count
  For i = 1 To j
   On Error Resume Next
    Application.Names(i).Delete
   On Error GoTo 0
  Next i
  If Application.Names.Count > 0 Then
   i = j - Application.Names.Count
   MsgBox i & " 個、残っています。", vbInformation
  Else
   MsgBox "このシートから、名前はすべて削除しました。", vbInformation
  End If
End Sub
    • good
    • 0
この回答へのお礼

詳しいご説明ありがとうございました。
おかげで原因がわかりました。
マクロに関しては、当方素人の為今後勉強いたします。

お礼日時:2009/06/04 00:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!