• 締切済み

エクセル・マクロ シートの非表示でマクロのエラー

エクセル勉強中です。 マクロの記憶でSheet2の元データの図と記入できるセルをSheet1の有効セルにコピペするマクロを作りました。 複数の方が使う予定なので元データのSheet2を非表示にしたところマクロがエラーになりました。 どうしたらよいでしょうか? また貼り付けをする時、微妙に元データのシートがちらちらと移ります。 こちらも合わせてご指導いただけましたら助かります。   よろしお願いします。 Sub b1ab1() ' ' b1ab1 Macro ' ' Sheets("Sheet2").Select Range("AK48:AP56").Select Selection.Copy Sheets("ダクト制作単品図").Select ActiveSheet.Paste End Sub

みんなの回答

  • mogurun
  • ベストアンサー率37% (3/8)
回答No.1

シートを非表示のままではそのシートに関するマクロはエラーになります。 そこで、普段非表示にしているシートでマクロを実行するには マクロの中でシート操作を実行するときだけシートを表示させて、 シート操作が終わったらまたシートを非表示にするという方法を使います。 実行したい動作の前後に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 貴殿の実用上問題ないのかもしれませんが、 上のマクロは「ダクト制作単品図」シート上のアクティブなセル(選択してあるセル)なら どこにでもペーストされてしまうので ペーストするセル(またはレンジ)も指定する方がいいように思われます。

pannjisukisuki
質問者

お礼

ありがとうございます!! 思っていた仕上がりになりました。 自分なりに探ってはみたのですがわからなくて初めて質問させていただきましたがわかりやすい説明とアドバイスに感謝です。

関連するQ&A