重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ファイル[testBOOK]の中に(sheet1)(sheet2)があり
(sheet2)は非表示,ブック保護されています。

(sheet1)にあるマクロAAボタンで
・[図A]を非表示
・[図B]を表示
・マクロBBを実行
するようになっています。

---------------------------------------

Sub AA()

'≪非表示≫
ActiveSheet.Shapes("図A").Visible = False

'≪表示≫
ActiveSheet.Shapes("図B").Visible = True

'ブック保護解除
ActiveWorkbook.Unprotect

'マクロBB実行
Sheets("sheet2").Visible = True
Sheets("sheet2").Select
Application.Run "testBook.xlsm!BB"

ActiveWindow.SelectedSheets.Visible = False

'ブック保護
ActiveWorkbook.Protect

End Sub

----------------------------------------

マクロBBとは[sheet2]の中にある
・[図A]を非表示
・[図B]を表示
です。

上記のマクロを実行させると(sheet2)が瞬間的に表示されてしまうのですが、
これを表示させないようにすることはできないでしょうか?

A 回答 (2件)

マクロ実行時に、画面の変化を止めることが出来ます。


http://officetanaka.net/excel/vba/speed/s1.htm
にある。
Application.ScreenUpdating = False

Application.ScreenUpdating = True
です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
簡単に解決することができました。
感謝感謝です!!

お礼日時:2011/10/10 13:44

変更前:


ActiveSheet.Shapes("図A").Visible = False

変更後:
worksheets("Sheet1").shapes("図A").visible = false
worksheets("Sheet2").shapes("図A").visible = false

このように「セレクト」「セレクション」「アクティブなんたら」を使わないマクロを書くことで,わざわざ「シート2を再表示しセレクトしてからアクティブシートの要素を操作してまた非表示にする」といった一連の段取りを省略します。



作成例:
sub macro1()
worksheets("Sheet1").shapes("図A").visible = false
worksheets("Sheet1").shapes("図B").visible = true
worksheets("Sheet2").shapes("図A").visible = false
worksheets("Sheet2").shapes("図B").visible = true
end sub
もちろんBBマクロをわざわざ用意して使う必要があるのなら,BBを上記作成例のように手直します。
    • good
    • 0
この回答へのお礼

ありがとうございます。 試してみます。

お礼日時:2011/10/10 13:43

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