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

VBA のシートの表示/非表示を切り替える Visible プロパティ について説明します。Visible プロパティは、様々なオブジェクトに用意されていますが、ここではワークシートに対する使い方について説明します。

WorkSheets.Visible プロパティの使い方

ワークシートの表示、非表示を切り替える構文は以下の通りです。

WorkSheetsオブジェクト.Visible = True または False

表示/非表示を行いたい WorkSheets オブジェクトの Visible プロパティに論理値を代入します。True で表示、False で非表示となります。表示中のシートに True、非表示中のシートに False を指定しても何も起こらず、エラーにもなりません。

以下は、Sheets を非表示にする例です。

' シート名を指定して隠す
Worksheets("Sheet2").Visible = False

以下のようなコードでも同じ結果が得られます。

' Sheet2をインデックス番号指定で隠す
Worksheets(2).Visible = False

実行前

Visible1

実行後

Visible2

上のプログラムの False を True に変えると、シートが再表示されます。

ワークシートの指定方法について

ワークシートのインデックス番号は、ワークシートの追加や削除、順序の入替が起こると、左から数字を詰めて振り直されます。

たとえば Sheet2 を削除したとすると、シート名は Sheet2、Sheet3、Sheet4 ... ですが、番号は1、2、3 ... となり、シート名の数字とインデックス番号に相違が生じます。

以下は、Sheet2削除後の実行例です。番号指定とシート名指定で結果が異なります。

番号で指定した場合

'インデックス番号指定
Worksheets(3).Visible = False

この場合は、Sheet4が隠れます。

Visible3

シート名で指定した場合

'シート名指定
Worksheets("Sheet3").Visible = False

この場合は、Sheet3が隠れます。

Visible4

インデックス番号で指定すると、VBA は「左から何番目のシートか」で対象を決定しており、シート名の数字は全く関係ないことがわかります。これは、シートの表示/非表示だけでなく、シートを選択する WorkSheets.Select メソッド、シートの削除を行う WorkSheets.Delete でも同様ですので、注意が必要です。


イベント