「みんな教えて! 選手権!!」開催のお知らせ

いつもお世話になっております。
Google検索してもわかりませんでした。

■やりたいこと
エクセルVBAで、あるシートがDeactivateになったときに、そのシートを非表示にしたいです。
下記マクロ正しくはないですが、イメージこんな感じです。

Private Sub Worksheet_Deactivate()
  'このワークシートを非表示にする
  ThisWorksheet.Visible = False
End Sub


ActiveSheetとすると、Deactivate後にアクティブになったシートが対象となってしまいます。
ほかのやり方で対応は可能なのですが、あくまでもこの「Private Sub Worksheet_Deactivate()」でできないものでしょうか?

シンプルに適した方法を模索しております。


■動作環境
OS 名:Microsoft Windows 10 Pro
OS バージョン:10.0.16299 N/A ビルド 16299
OS 製造元:Microsoft Corporation
プロセッサ:Intel64 Family 6 Model 42 Stepping 7 GenuineIntel ~2400 Mhz
BIOS バージョン:TOSHIBA Version 2.20 , 2012/06/22
物理メモリの合計:3,988 MB
Excel バージョン:14.0.7192.5000(32ビット) Microsoft Office Standard 2010の一部

以上、よろしくお願いいたします。

A 回答 (1件)

こんにちは



Deactivateって使ったことがないのですが、試してみました。

>Private Sub Worksheet_Deactivate()
これってシートモジュールに記述してませんか?
そうであるなら、対象シートは固定なので、
 Worksheets("シート名")
などで決め打ちすれば良いのではないでしょうか?

ブックに記載する場合だと、
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
のようになるので、引数ShにDeactivateされたシートオブジェクトが渡されます。
この場合は、こちらを利用することで、シートの特定が可能と思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>これってシートモジュールに記述してませんか?
はい、そうです。

>ブックに記載する場合だと、

こちらで対応できました!
シートのイベントプロシージャと思い込んでおり、ブックはみていませんでした。

どうもありがとうございました。

お礼日時:2018/03/14 15:58

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

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


おすすめ情報