VBA のシートの表示/非表示を切り替える Visible プロパティ について説明します。Visible プロパティは、様々なオブジェクトに用意されていますが、ここではワークシートに対する使い方について説明します。
WorkSheets.Visible プロパティの使い方
ワークシートの表示、非表示を切り替える構文は以下の通りです。
1 |
WorkSheetsオブジェクト.Visible = True または False |
表示/非表示を行いたい WorkSheets オブジェクトの Visible プロパティに論理値を代入します。True で表示、False で非表示となります。表示中のシートに True、非表示中のシートに False を指定しても何も起こらず、エラーにもなりません。
以下は、Sheets を非表示にする例です。
1 2 |
' シート名を指定して隠す Worksheets("Sheet2").Visible = False |
以下のようなコードでも同じ結果が得られます。
1 2 |
' Sheet2をインデックス番号指定で隠す Worksheets(2).Visible = False |
実行前
実行後
上のプログラムの False を True に変えると、シートが再表示されます。
ワークシートの指定方法について
ワークシートのインデックス番号は、ワークシートの追加や削除、順序の入替が起こると、左から数字を詰めて振り直されます。
たとえば Sheet2 を削除したとすると、シート名は Sheet2、Sheet3、Sheet4 ... ですが、番号は1、2、3 ... となり、シート名の数字とインデックス番号に相違が生じます。
以下は、Sheet2削除後の実行例です。番号指定とシート名指定で結果が異なります。
番号で指定した場合
1 2 |
'インデックス番号指定 Worksheets(3).Visible = False |
この場合は、Sheet4が隠れます。
シート名で指定した場合
1 2 |
'シート名指定 Worksheets("Sheet3").Visible = False |
この場合は、Sheet3が隠れます。
インデックス番号で指定すると、VBA は「左から何番目のシートか」で対象を決定しており、シート名の数字は全く関係ないことがわかります。これは、シートの表示/非表示だけでなく、シートを選択する WorkSheets.Select メソッド、シートの削除を行う WorkSheets.Delete でも同様ですので、注意が必要です。