サイトについて      連絡先   検索

VBA シートを非表示にする

はじめに

Excel VBA マクロのシートを表示または非表示にする方法を紹介します。

Sheets.Visible プロパティまたは Worksheets.Visible プロパティからシートを表示または非表示にできます。

複数のシートをまとめてや、ワークブックなどを指定できます。

  • 目次
    • シートを非表示にする
    • シートを表示する
    • 非表示になっているか判定する
    • 複数のシートを非表示にする

シートを非表示にする

sheet1

Sheets の引数にインデックスかシート名を指定すると、そのシートを非表示にできます。

1 番目のシートを非表示にするにはSheets(1).Visible = xlSheetHiddenまたはWorksheets(1).Visible = xlSheetHiddenを入力します。1 番左のシートが 1 です。


Sheets(1).Visible = xlSheetHidden        ' 1 番目のシートを非表示
Sheets("Sheet1").Visible = xlSheetHidden ' シート「Sheet1」を非表示

Worksheets(1).Visible = xlSheetHidden        ' 1 番目のシートを非表示
Worksheets("Sheet1").Visible = xlSheetHidden ' シート「Sheet1」を非表示
5

Sheets と Worksheets の違いはワークシート以外を取得するかどうかです。

完全に非表示

シートを完全に非表示にするにはVisible = xlSheetVeryHiddenのように入力します。


Worksheets(1).Visible = xlSheetVeryHidden       
Worksheets("Sheet1").Visible = xlSheetVeryHidden

xlSheetVeryHidden で非表示にすると、Excel の操作で再表示ができなくなります。表示するには下記の「シートを表示する」方法が必要です。

別のワークブックを非表示

Workbooks の引数にインデックスかブック名を指定すると、そのブックのシートを非表示にできます。

ブック名「Book2.xlsx」のブックを非表示にするにはWorkbooks("Book2.xlsx").SheetsまたはWorkbooks("Book2.xlsx").Worksheetsのように入力します。


' ブック「Book2.xlsx」のシート「Sheet1」を非表示
Call Workbooks("Book2.xlsx").Sheets("Sheet1").Visible = xlSheetHidden

' 2 番目のブックの 1 番目のシートを非表示
Call Workbooks(2).Sheets(1).Visible = xlSheetHidden

シートを表示する

シートを表示するにはVisible = xlSheetVisibleのように入力します。


Sheets(1).Visible = xlSheetVisible        ' 1 番目のシートを表示
Sheets("Sheet1").Visible = xlSheetVisible ' シート「Sheet1」を表示

Worksheets(1).Visible = xlSheetVisible        ' 1 番目のシートを表示
Worksheets("Sheet1").Visible = xlSheetVisible ' シート「Sheet1」を表示

非表示になっているか判定する

Visible が xlSheetVisible なら表示されています。


' 非表示になっているシートを表示する
Dim ws As Worksheet
For Each ws In Worksheets
    If ws.Visible <> xlSheetVisible Then
        ws.Visible = xlSheetVisible ' 表示する
    End If
Next

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

1 番目と 2 番目のシートを非表示にするにはSheets(Array(1, 2)).VisibleまたはSheets(Array("Sheet1", "Sheet2")).Visibleのように入力します。



Sheets(Array(1, 2)).Visible = xlSheetHidden               ' 1 番目と 2 番目のシートを非表示
Sheets(Array("Sheet1", "Sheet2")).Visible = xlSheetHidden ' シート「Sheet1」と「Sheet2」のを非表示

Worksheets(Array(1, 2)).Visible = xlSheetHidden               ' 1 番目と 2 番目のシートを非表示
Worksheets(Array("Sheet1", "Sheet2")).Visible = xlSheetHidden ' シート「Sheet1」と「Sheet2」を非表示
6

引数に配列でインデックスやシート名を指定します。

すべてのシートを非表示

すべてのシートを非表示にすると「エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。」が発生します。

このため、必ず 1 つはシートを表示する必要があります。

  • 目次
    • シートを非表示にする
    • シートを表示する
    • 非表示になっているか判定する
    • 複数のシートを非表示にする