VBAでシートを非表示にする方法!複数シートや別ブックも可!

VBAでExcelのシートを非表示にさせたいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAでExcelのシートを非表示にしたいが方法がよくわからない
・複数シートや別ブックのシートを一括で非表示にしたいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・VBAでExcelのシートを非表示にする方法
・VBAで複数シートや別ブックのシートを一括で非表示にする方法

についてまとめます!

VBAでExcelのシートを非表示にするイメージ

VBAでExcelのシートを非表示にするイメージについて説明をします。

指定した複数シートを一括で非表示にしたり、

別ブックの複数シートを一括で非表示にしたりすることもできます。

まとめてシートを非表示にしたいときは便利ですね。

早速実装して試してみましょう。

シートをいくつか作成する

Excelブックのシートをいくつか作成しましょう。

サンプルでは5つのシートを用意しました。

VBAで複数のシートを一括で非表示にする

VBAで複数のシートを一括で非表示にする方法について説明をします。

今回は”Sheet2″、”Sheet3″、 “Sheet4″、 “Sheet5″シートを非表示にしていきます。

VBAコード

VBAは以下の通りです。

Sub 複数のシートを非表示にする()

    Dim objSheets As Sheets
    Dim objSheet As Object
    
    '非表示にしたいシート名を指定します。
    Set objSheets = Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5"))
    
    'Sheetsコレクションからシートオブジェクトを取得します。
    For Each objSheet In objSheets
        '該当シートを非表示にします。
        objSheet.Visible = False
    Next
    
    'オブジェクトを解放します。
    Set objSheets = Nothing
    Set objSheet = Nothing

End Sub

VBAの設定

非表示にしたいシート名を指定します。シートの数を増やしたい場合は「, “<シート名>”」の形式で追加してください。

Set objSheets = Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5"))

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行

VBAを実行しましょう。

はい、指定したシートが非表示になりましたね。

VBAの説明

VBAについて説明をします。

Sheetsコレクションには指定したブックのシートオブジェクトすべてが含まれています。そこからシートオブジェクトを取得しVisible プロパティをFALSEにすることによりシートを非表示にさせていきます。

Sheetsコレクションからシートオブジェクトを取得します。

For Each objSheet In objSheets

該当シートを非表示にします。

objSheet.Visible = False

オブジェクトを解放します。

Set objSheets = Nothing Set objSheet = Nothing

VBAで別ブックの複数のシートを一括で非表示にする

次は別ブックの複数のシートを一括で非表示にするようにしていきましょう。

シートをいくつか非表示にしたブックを用意し、格納先のパスをメモしておきます。

非表示にするシートは”Sheet2″、”Sheet3″、 “Sheet4″です。

VBAコード

VBAは以下の通りです。

Sub 別ブックの複数のシートを非表示にする()

    Dim objSheets As Sheets
    Dim objSheet As Object
    Dim objWb As Workbook
    
    'ブックファイルのパスを指定します。
    Set objWb = Workbooks.Open("F:\test\他ブック.xlsx")
    
    '非表示にしたいシート名を指定します。
    Set objSheets = objWb.Sheets(Array("Sheet2", "Sheet3", "Sheet4"))
    
    'Sheetsコレクションからシートオブジェクトを取得します。
    For Each objSheet In objSheets
        '該当シートを非表示にします。
        objSheet.Visible = False
    Next
    
    'オブジェクトを解放します。
    Set objSheets = Nothing
    Set objSheet = Nothing
    Set objWb = Nothing

End Sub

VBAを設定する

VBAを設定していきましょう。

ブックファイルのパスを指定します。

Set objWb = Workbooks.Open("F:\test\他ブック.xlsx")

非表示にしたいシート名を指定します。

Set objSheets = objWb.Sheets(Array("Sheet2", "Sheet3", "Sheet4"))

VBAを実行

VBAを実行しましょう。

はい、指定ブック内すべてのシートが非表示になりましたね。

VBAの説明

VBAについて説明をします。

ブックファイルのパスを指定します。

Set objWb = Workbooks.Open("F:\test\他ブック.xlsx")

非表示にしたいシート名を指定します。

Set objSheets = objWb.Sheets(Array("Sheet2", "Sheet3", "Sheet4"))

Sheetsコレクションからシートオブジェクトを取得します。

For Each objSheet In objSheets

該当シートを非表示にします。

objSheet.Visible = False

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・VBAでExcelのシートを非表示にする方法
・VBAで複数シートや別ブックのシートを一括で非表示にする方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です