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