• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のブックを開いているとエラーが出てしまいます)

エクセルで複数のブックを開く際のエラーの解決方法について

このQ&Aのポイント
  • エクセルで複数のブックを開いて作業中に「インデックスが有効範囲にありません」というエラーが発生しています。一つのブックを操作している際にはエラーは発生しませんが、二つのブックを切り替えて作業する際に発生します。
  • エラーが発生する部分は、各ブックのマクロのコードの一部です。
  • エラーを解決するためには、二つのブックでコードが干渉しないようにする必要があります。具体的な解決方法や対策について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

アクティブブックを切り替えているのもありますが,それらのマクロの一番の問題点は,「Enterキーでマクロを動かさせる」の仕込みが甘いことにあります。 最低限の手直しに止めるにしても,表示ブックを切り替えるたびに,Enterしたときに「今はどのブックのマクロが起動すればいいのか」の設定を都度設定し直させないといけません。 手順: VBE画面のプロジェクトエクスプローラで,(1)ブックのThisWorkbookをWクリックして開く 現れたシートに下記をコピー貼り付ける private sub Workbook_Activate() application.onkey "{ENTER}", "Auto_Open" application.onkey "{RETURN}", "Auto_Open" end sub private sub Workbook_Deactivate() application.onkey "{ENTER}" application.onkey "{RETURN}" end sub private sub Workbook_Close() application.onkey "{ENTER}" application.onkey "{RETURN}" end sub (2)ブックのThisWorkbookにも,同じマクロをコピー貼り付ける。 以上です。 #補足 もうちょっとマクロのスキルが上がってから先のお話になりますが,将来的には今の「Enterキーで起動する」のマクロを全くやめて,各ブックの今作業しているシートそれぞれに,「B3セルに記入したら所定のマクロが自動で動く」というマクロに切り替えます。 練習: まっさらのブックを用意する シート1のシート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range) if target.address <> "$B$3" then exit sub msgbox thisworkbook.name & " B3 enter" ’実際にはこの続きに,データの抽出と転記の手順を記入していく end sub ブック2のシート1にも同じ仕込みをして,それぞれのブックを並べてB3に記入する動作をおこなってみる。

noname#256688
質問者

お礼

keithin様 おかげさまで教えて頂いた通り行いましたところ、問題なく動作いたしました。マクロ初心者であるにもかかわらず、コードや貼り付け方まで教えて頂きたいへん感謝申し上げます。 今回のエンターで実行させる方法の仕込みが甘さと考え方の方向性が甘いことを痛感しました。 あと、おっしゃるとおり今後はエンターによる実行ではなく、所定の記入したセルで自動実行させる考えに切り替えてみます。 そして、ご丁寧に付け加えて頂いたそのマクロの練習や勉強も同時に行って行きたいと思います。  大変奥が深く、まだまだ勉強しなければいけないですが、これを機にがんばってみたいと思います。 末筆になりますが、このたびはたいへんご親切に分かりやすく教えていただき、本当に感謝いたします。直接お礼をしたいところですが、ここでのお礼とさせていただきます。 重ね重ね誠にありがとうございました。

関連するQ&A

専門家に質問してみよう