- 締切済み
【長文です】Excel2000 名前の定義を計算式に利用していますが、急に参照できなくなりました。
初めて質問させて頂きます。 仕事で使用しているExcelファイルの様子がおかしく、困っています。 該当ファイルは以下の内容です。 ・WinXP・Excel2000 ・商品コード、商品名など商品データベースとして作成 ・シートは全3枚 ⇒Sheet1は約3000件、Sheet2は約100件、Sheet3は約250件のデータがあります。(商品の使用用途により、シートを分けています) ・このブックを参照元として、同じ書式のExcelブックを作成します その際、参照先ブックはIFとVlookupを使って商品コードを入力すると商品名他の情報が表示されるようにしています ・Sheet1のデータ部分に「List1」、Sheet2のデータ部分に「List2」と名前を定義し、参照先の計算式で名前を利用しています。 ・Sheet1とSheet2には、データを検索するためのマクロを付けています。どちらもFor…Nextを使って商品名で検索し、検索を解除するも のです。コードや価格等の検索はオートフィルタを利用します。 このファイルは、今日の午前中まで正常に利用できましたが、正午すぎに急に以下のような症状がでました。 ・参照先ファイルに商品コードを入力しても、全てのコードでエラーになる(エラー表示は"NAME?"もしくは"N/A") ⇒参照元に該当データがあることを確認しています。 ・既存の参照先ファイル(商品名等が正常に入力してあるもの)を開き、データを更新すると、全件エラー表示になる(エラー内容は上記 と同じ) 現在、このような状況です。 ・参照元ファイル(該当ファイル)で名前の定義がされているセル範囲の確認をしました。 ⇒通常、名前ボックスで定義された名前を選択すると、定義されたセルまたはセル範囲が選択されると思いますが、まったく選択されません。 それどころか、定義した同じ名前で同じシート内の別のセルが定義されてしまいます。(名前ボックスに同じ名前が2つ並んだ状態です) いっそのこと名前の定義をしなおそうと思い、挿入⇒名前⇒定義で定義済みの名前2つを削除しようとしましたが、削除されません。(選択した名前のセル範囲は消えますが、名前は消えずにボックス内に表示されたままです。 ・挿入⇒名前⇒定義で再度、セル範囲を指定しなおしましたが、状況はかわりませんでした。 ⇒このサイトの過去ログ・ネット上の他サイト・マイクロソフトのサポートなどいろいろ検索してみましたが、こういうケースの対処法をみつけることができませんでした。念のためウィルスのオンラインチェックもしてみましたが、ウィルスは検索されませんでした。 ・参照元の計算式の内容から、名前を定義したセル範囲(Vlookupでセル範囲として利用)が正常に定義されていないため、エラーが表示されるのではと考えていますが、参照先の計算式を名前を使用しない式に変えようと思うと、過去数年分は見直さなくてはならないので、他の方法を探しています。 ・この症状がでる前(今日の午前中)に作業していた人は、名前の定義やマクロを修正するなど、通常業務以外のことは何もしていないとのことでした。 なぜ、突然こんなことになるのか検討がつきません ・現在定義している名前「List1」「List2」が今まで通りのセル範囲を定義できる方法(セル範囲の修正方法)をご存知の方、またこういうケースに遭遇したことある方、何か他にアイデアがある方など、回答どうぞよろしくお願いします。 長文で申し訳ありませんでした。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hotosys
- ベストアンサー率67% (97/143)
挿入⇒名前⇒定義で両方表示するのはおかしいと思いますが、名前の定義はブック単位の定義とシート単位の定義ができると思います。 以下のvbaで確認してみてください。 Sub sample() Dim nm As Name Dim sh As Worksheet MsgBox "Workbookの名前定義数=" & ThisWorkbook.Names.Count For Each nm In ThisWorkbook.Names MsgBox nm.Name Next For Each sh In ThisWorkbook.Worksheets MsgBox sh.Name & "の名前定義数=" & sh.Names.Count For Each nm In sh.Names MsgBox nm.Name Next Next End Sub 全ての定義を削除します。 Sub sample2() Dim nm As Name Dim sh As Worksheet For Each nm In ThisWorkbook.Names nm.Delete Next For Each sh In ThisWorkbook.Worksheets For Each nm In sh.Names nm.dele Next Next End Sub この状態で定義されている名前の確認と再定義してみた場合はどうなりますか? とりあえずブックが不安定になるのはどのバージョンンのExcelでもあると思うので、新しいブックに値やvbaをコピーしてみてはどうでしょうか?
- FEX2053
- ベストアンサー率37% (7991/21371)
Excel2000は、数あるExcelのうちでもっとも不安定、かつ怪しい動きを するExcelでして、業務に使うなら他のバージョンをお勧めしたいん ですけど・・・。 とりあえず、他のマシンでそのブックを開いてみて下さい。これでダメ なら、原因はシート側ですから、新しいブックを開いてシートをコピー する云々の「今までのシートは捨てる」方向で進む以外にないです。 範囲名を決める「アンカー」が動いてしまい、正規のセル名と重なって しまったんじゃないと思うんで・・・。 VBAに慣れているなら、RANGE(範囲名)を強制的に再設定するコードを 組んで動作させてみる・・・なんて荒療治も無いわけじゃないんです けど、VBAに通暁してないとむしろデータをぶっ壊す可能性が・・・。 ということで、「基本はあきらめる方向」で収束する以外になさそうです。
お礼
早速のご回答、ありがとうございました。 お礼が遅くなり申し訳ありません。 メインで作業しているマシン3台(Win2000orWinXP、Excel2000)で確認しましたが、どこも同じ症状でした。 やはり、新しくシートを作成したほうがいいんですね…。 2000は社内でメインで使用しているんです。2000が一番不安定なんて、今まで知りませんでした。 機会があったらバージョンアップをお願いしてみます。 VBAは本&ネットで調べつつやっているので、複雑なことはできません(>_<) これをいいきっかけに、この業務そのものの仕組みを考え直したいと思います。 ありがとうございました。
お礼
ご回答ありがとうございます。 該当ファイルを社外に持ち出せないので、すぐに検証ができませんが、明日試してみます。 明日中に検証結果を報告します。 まずはお礼まで。ありがとうございました。
補足
7/20検証しました。 Sample()の検証結果 ブックの名前定義数=11 内、7つは各シートに設定しているオートフィルタ・印刷範囲・印刷タイトルなどです。 問題の名前、List1とList2はブックに定義してある名前でした。 残り4つのうち、 1) List1 …Sheet1の既存データのセル範囲 2) List1 …設定した覚えのないセル 3) List2 …Sheet2の既存データのセル範囲 4) List2 …設定した覚えのないセル でした。 シートの名前は上記の7つの名前なので、問題ないと思います。 Sample2()の検証結果 ブックに定義してある11個の名前のうち、上記の 1) List1 …Sheet1の既存データのセル範囲 3) List2 …Sheet2の既存データのセル範囲 が削除できませんでした。 Excel画面に戻って、挿入⇒名前⇒定義から 1) List1 …Sheet1の既存データのセル範囲 3) List2 …Sheet2の既存データのセル範囲 を範囲選択しなおしてみました(わざと範囲を変えて選択してみました)が、範囲が上書きされず、同じList1・List2という名前で追加された状態になりました。 この状態(List1が2つ、List2が2つ定義されている状態)で、Sample2()を実行してみましたが、1)と3)は削除されず、新たに定義した名前のみが削除されました。 他にどうしようもないので、とりあえず、新規ブックにデータを貼り付けて、名前の定義もしなおしてみたところ、参照先ファイルのエラーも解消され元通りになりましたので、これで行こうと思います。 該当ファイルを作成して4~5年たちますが、こんな風に名前の定義が削除できないケースが初めてだったので焦ってしまいました。 回答していただいた方の貴重なご意見、ありがとうございました。 VBAを使った検証は大変勉強になりました。こういうことでVBAを利用しようと思ったことがなかったので、驚きでした。 また、潔くファイルを作成し直すことも大切だとわかりました。 本当にありがとうございました。