Excel VBA – シートの表示/非表示を切替

2022年5月23日

使用頻度はそんなに高くないけど、最近たまたま使うことがあってとても重宝したのでシェアしてみます。

シートの表示/非表示を切り替える

シートの表示/非表示を切り替えているのは、下記のコードです。

🙂Sheets(sh).Visible = True(False)

Visibleというプロパティが、シートの表示状態を司るものです。

2シート目以降を一括で表示/非表示

すべてのシートを非表示にはできずエラーになります。

なので2シート目以降ということにして、表示/非表示を切り替えます。

Sub shtVisible1()

Dim shtCnt  As Long
Dim sh      As Long

    '※ シートの数
    shtCnt = Sheets.Count

    '※ 2シート目の状態で切り替え
    If Sheets(2).Visible = True Then
        For sh = 2 To shtCnt
            Sheets(sh).Visible = False
        Next sh
    ElseIf Sheets(2).Visible = False Then
        For sh = 2 To shtCnt
            Sheets(sh).Visible = True
        Next sh
    End If
End Sub

2シート目の状態で切り替え

2シート目以降の状態はすべて同じにしますので、2シート目の状態で表示/非表示を切り替えます。

🙂If Sheets(2).Visible = True Then

上記のようにすると「2番目のシートが表示の場合」となって、その中に非表示にするコードを書く感じです。

指定したシートだけ表示/非表示を切り替える

配列に対象のシート番号を保存しておいて、そのシートだけを切り替えます。

Sub shtVisible()

Dim shtAry  As Variant
Dim shtCnt  As Long
Dim sh      As Long

    '※ 対象のシート番号
    shtAry = Array(2, 4, 6)
    shtCnt = UBound(shtAry)

    '※ シートの状態で切り替え
    If Sheets(shtAry(0)).Visible = True Then
        For sh = 0 To shtCnt
            Sheets(shtAry(sh)).Visible = False
        Next sh
    ElseIf Sheets(shtAry(0)).Visible = False Then
        For sh = 0 To shtCnt
            Sheets(shtAry(sh)).Visible = True
        Next sh
    End If
End Sub

対象のシート番号を配列に設定

shtAryという配列に、表示/非表示を切り替える対象のシート番号を代入しておきます。

🙂shtAry = Array(2, 4, 6)

シート名でも指定できるけど、コードが長くなって大変なのでシート番号にしました。

ショートカットに登録しておくと便利

リボンのメニューから、開発>マクロ>オプションと進むとショートカットを設定できます。

人が見てるときに実行するとものすごく驚かれる可能性があるので、使うときには少し注意が必要です。笑

VBA

Posted by SNOW