ワークシートの表示と非表示を切り替える方法を紹介します。
VBAでシートの表示・非表示を切り替える
設定は、WorksheetオブジェクトのVisibleプロパティで行います。
具体的には次のように設定します。
Worksheets(“シート名“).visible=値
シート名は任意のシート名(表示・非表示を変更したいシート)を記入します。
値には次の物を設定できます。
名前 | 説明 |
True |
シートを表示する。 |
False |
シートを非表示にする。 |
xlSheetVisible | シートを表示する。 xlSheetVeryHiddenで非表示にしたシートを表示する。 |
xlSheetHidden |
シートを非表示にする。 |
xlSheetVeryHidden |
シートを非表示にする。 |
ユーザー(第三者)に見せたくないシートの表示・非表示を切り替える場合でなければ文字数の少ない”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に変更してみてください。
ブック内にどんなシートがあるかを確認したい場合は、次の記事を参考にしてください。
コメント