【VBA】ワークシートの表示・非表示を切り替える

Excel・VBA

ワークシートの表示と非表示を切り替える方法を紹介します。

VBAでシートの表示・非表示を切り替える

設定は、WorksheetオブジェクトのVisibleプロパティで行います。

具体的には次のように設定します。

Worksheets(“シート名“).visible=

シート名は任意のシート名(表示・非表示を変更したいシート)を記入します。

値には次の物を設定できます。

名前 説明
True

シートを表示する。

False

シートを非表示にする。

xlSheetVisible  シートを表示する。
xlSheetVeryHiddenで非表示にしたシートを表示する。
xlSheetHidden

シートを非表示にする。

xlSheetVeryHidden

シートを非表示にする。
(エクセルメニューでの再表示不可、xlSheetVisible で再表示可)

ユーザー(第三者)に見せたくないシートの表示・非表示を切り替える場合でなければ文字数の少ない”True”と”False”の使用をお勧めします

xlsheetHiddenとxlSheetVeryHiddenの違い

xlsheetHiddenとxlSheetVeryHiddenの違いは前述のとおり、エクセルメニューで再表示できるかどうかです。実際にコードを実行した結果を紹介します。

コードを実行するエクセルファイル

コードを実行するエクセルファイルは、エクセルのワークシートが1~3の3シートで構成されています。今回の比較ではシート2の表示・非表示切り替えを行います。

実行するコード①

Sub シート非表示()
 Worksheets("Sheet2").Visible = xlSheetHidden
End sub

実行するコード②

Sub シート非表示()
 Worksheets("Sheet2").Visible = xlSheetVeryHidden
End sub

結果

結果の比較です。コード①ではエクセルメニューから再表示を選択できるが確認できますが、コード②では再表示が選択できないようになっています。

ブック内の任意のシートを一つ残して他はすべて非表示にする

全てのワークシートを非表示にできないので、一つだけワークシートを残してそれ以外はすべて非表示にするサンプルコードです。

Sub sheet非表示()

    Dim ws As Worksheet
    Dim wsName As String: wsName = "Sheet2"
    
    For Each ws In Worksheets
     If ws.Name <> wsName Then
      ws.Visible = False
     End If
    Next
    
End Sub

このコードでは”Sheet2”というワークシート以外はすべて非表示にしています。変数wsNameに任意のシート名を記入することで残すシートを変更できます。

ブック内全てのワークシートを表示する

Sub Sheet表示()

    Dim ws As Worksheet
    
    For Each ws In Worksheets
      ws.Visible = True
    Next
    
End Sub

もし表示されないシートがある場合は、TrueをxlSheetVisibleに変更してみてください。

ブック内にどんなシートがあるかを確認したい場合は、次の記事を参考にしてください。

コメント

タイトルとURLをコピーしました