プロが教えるわが家の防犯対策術!

エクセル勉強中です。
マクロの記憶でSheet2の元データの図と記入できるセルをSheet1の有効セルにコピペするマクロを作りました。
複数の方が使う予定なので元データのSheet2を非表示にしたところマクロがエラーになりました。
どうしたらよいでしょうか?
また貼り付けをする時、微妙に元データのシートがちらちらと移ります。
こちらも合わせてご指導いただけましたら助かります。
 
よろしお願いします。

Sub b1ab1()
'
' b1ab1 Macro
'

'
Sheets("Sheet2").Select
Range("AK48:AP56").Select
Selection.Copy
Sheets("ダクト制作単品図").Select
ActiveSheet.Paste
End Sub

A 回答 (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

貴殿の実用上問題ないのかもしれませんが、
上のマクロは「ダクト制作単品図」シート上のアクティブなセル(選択してあるセル)なら
どこにでもペーストされてしまうので
ペーストするセル(またはレンジ)も指定する方がいいように思われます。
    • good
    • 5
この回答へのお礼

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

お礼日時:2014/08/30 11:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A