シートの表示/非表示を設定する(Visibleプロパティ)|Excel VBA |
各シートの表示/非表示は、Visibleプロパティの設定により切り替えることができます。
Trueでシートを表示、Falseでシートを非表示にします。なお、全てのシートを非表示にすることはできません。
構文 Object.Visible 取得/設定
設定項目 | 内容 |
---|---|
Object | Worksheet,Chart,Worksheetsオブジェクトコレクション,Sheetsコレクションオブジェクト,Chartsコレクションオブジェクト |
次のサンプル1はVisibleプロパティの値を反転させることで、シートの表示と非表示を切り替えます。
Sub Sample1()
With Sheets(1) '---1枚目のシートを対象
.Visible = Not .Visible '---表示/非表示を切り替え
End With
End Sub
TrueとFalseの値を使用するプロパティでは、このような記述で値の切り替えができるので、覚えておくと便利です。
また、定数xlVeryHiddenを設定した場合には、マクロかVBEのプロパティウィンドウでVisibleプロパティの値を変更しない限り、ユーザーの操作でシートを再表示することはできなくなります。
Sub Sample2()
Dim i As Integer
For i = 2 To 5
Sheets(i).Visible = xlSheetVeryHidden '---ユーザーからは全く見えない
Next i
End Sub
このサンプルは、ユーザーに変更を加えられたくない2枚目から5枚目のシートを、Excelの画面からは完全に非表示にして隠しています。
ユーザーに見せたくないシートのVisibleプロパティに定数xlVeryHiddenを設定し、コードをパスワードで保護しても、イミディエイトウィンドウで「Sheets(2).Visible=True」と実行することでシートの内容を見られてしまいます。
そういった場合には、見られたくないシートがアクティブになったときに非表示する処理を走らせることで対応します。見られたくないシートのシートモジュールに、次のようなイベントプロシージャを記述してください。
Private Sub Worksheet_Activate()
Sheets("Sheet2").Visible = xlVeryHidden
End Sub