質問: エクセル・マクロ シートの非表示でマクロのエラー エクセル勉強中です。 マクロの記憶でsheet2の元データの図と記入できるセルをsheet1の有効セルにコピペするマクロを作りました。 複数の方が使う予定なので元データのsheet2を非表示にしたところマクロがエラーになりました。 どうしたらよいでしょうか? また貼り付けをする時、微妙に元データのシートがちらちらと移ります。 こちらも合わせてご指導いただけましたら助かります。 よろしお願いします。 sub b1ab1() ' ' b1ab1 macro ' ' sheets("sheet2").select range("ak48:ap56").select selection.copy sheets("ダクト制作単品図").select activesheet.paste end sub
回答: シートを非表示のままではそのシートに関するマクロはエラーになります。 そこで、普段非表示にしているシートでマクロを実行するには マクロの中でシート操作を実行するときだけシートを表示させて、 シート操作が終わったらまたシートを非表示にするという方法を使います。 実行したい動作の前後にsheets("sheet2").visibleで表示・非表示を挿入します。 sheets("sheet2").visible = true(シートを表示する) さらに画面がちらちらするを止めるには application.screenupdating = false とします。(画面の更新をしない) 貴殿のマクロに付け加えると以下のようになります。 sub b1ab1() ' b1ab1 macro application.screenupdating = false '画面の更新をしない sheets("sheet2").visible = true 'シート2を表示 sheets("sheet2").select range("ak48:ap56").select selection.copy sheets("ダクト制作単品図").select activesheet.paste sheets("sheet2").visible = false 'シート2を非表示 application.screenupdating = true '画面の更新する end sub 貴殿の実用上問題ないのかもしれませんが、 上のマクロは「ダクト制作単品図」シート上のアクティブなセル(選択してあるセル)なら どこにでもペーストされてしまうので ペーストするセル(またはレンジ)も指定する方がいいように思われます。