大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、エクセルのシートを非表示にしたり表示するには、「Visible」を使います。すべてのシートを表示したり、指定したシートのみの表示、複数シートの非表示や表示する方法について、解説していきます。VBAを使ってシートの非表示や表示を自動化していきましょう。

はじめに

この記事では、Excelのシートを非表示にする方法について、ご紹介します。

シートを非表示にすることでシートの可読性が良くなります。

シート操作をVBAコードからできるようになると、作業効率が上がります。

VBAを使って、シートの操作を自動化していきましょう。

では、シートを非表示にする方法について、解説していきます。

この記事を読むメリット

  • シートを非表示にする方法がわかります

目次から見たい項目へ移動すると便利ですよ。

目次

VBAでシートを非表示/表示する

VBAを使って、シートを非表示や表示してみます。

シートを非表示

Excel VBAでシートを「非表示」にするVBAコードは、このようになります。

'シートを非表示
Sub TEST1()

    'シート名「A」を非表示にする
    Worksheets("A").Visible = False
    
End Sub

シートを非表示にするには、「オブジェクト名.Visible = False」とすればできます。

このVBAコードではシート名が「A」のシートを非表示にする、というコードを記載しています。

シートを非表示にするVBAコードを実行してみます。

次のようなシートを用意しました。

用意したシート

用意したシート

A~Dという名前のシートを用意しました。

ではVBAコードを実行してみます。

シート「A」を非表示にできた

シート名がAであるシートが非表示になる

シート名が「A」のシートが非表示になりました。

それ以外のシート「B~D」は表示されたままです。

シートを表示

非表示となっているシートを表示するVBAコードは、このようになります。

'シートを表示
Sub TEST2()

    'シート名「A」を表示する
    Worksheets("A").Visible = True
    
End Sub

シートを表示にするには「オブジェクト名.Visible = True」とすればできます。

このVBAコードではシート名が「A」のシートを表示する「Worksheets("A").Visible = True」としています。

シートを表示するVBAコードを実行してみます。

シート名が「A」のシートをあらかじめ非表示にしてあります。

シート「A」が非表示となっているシート

シート名がAであるシートをあらかじめ非表示にしたブック

シートを表示するVBAコードを実行してみます。

シート「A」を表示できた

シート名がAであるシートが表示される

「A」のシートが表示されました。

VBAですべてのシートを表示

すべてのシートを表示するしてみます。

エクセルで資料等を作成していくなかで、一旦シートを非表示にしておいたシートをすべて表示させたいといった場合に使えます。

「For Each」を使う

すべてのシートを表示させには、「For Each」を使うとできます。

'すべてのシートを表示
Sub TEST3()
    
    Dim WS
    
    'すべてのシートをループする
    For Each WS In Worksheets
        'シートを表示する
        WS.Visible = True
    Next
    
End Sub

すべてのシートをループするVBAコードは「For Each WS In Worksheets」になります。

このVBAコードの中にシートを表示させるVBAコード「WS.Visible = True」を記載します。

これですべてのシートを表示させることができます。

すべてのシートを表示させるVBAコードを実行してみます。

用意したシートには「A~D」のシートが作成されていて「B~D」は非表示となっています。

「B~D」を非表示にしたシート

非表示としたシートを含むエクセルブック

ではすべてのシートを表示させるVBAコードを実行します。

すべてのシートを表示できた

すべてのシートが表示される

すべてのシートが表示されました。

VBAで指定シートのみを表示

指定したシート以外を非表示にするVBAコードをご紹介します。

指定したシートだけを表示してそれ以外のシートは見えないようにしたい場合に使えます。

「For Each」を使う

シート名が「A」のシートだけを残して、それ以外を非表示にするVBAコードです。

'シート名「A」のみを表示
Sub TEST4()
    
    Dim WS
    
    'すべてのシートをループ
    For Each WS In Worksheets
        'シート名が「A」以外のとき
        If WS.Name <> "A" Then
            WS.Visible = False 'シートを非表示にする
        End If
    Next
    
End Sub

すべてのシートをループするというVBAコード「For Each WS In Worksheets」を使用します。

シートのオブジェクトが「WS」に入力されますのでシートの名前を「WS.Name」で取得します。

シートの名前「WS.Name」が「"A"」ではない場合はシートを非表示にする、ということをしています。

シート名「A」以外のシートを非表示にするVBAコードを実行してみます。

用意したシートはこちらです。

用意したシート

用意したシート

シート名が「A~D」のシートを用意しました。実行してみます。

シート「A」以外を非表示できた

シート名が「A」以外のシートを非表示にする

シート名が「A」以外のシートが非表示になりました。

指定したシートだけを表示して、それ以外を非表示にしたいといった場合に使えます。

VBAで複数シートを非表示/表示する

VBAで複数シートを非表示する方法と、複数シートを表示する、というのをやってみます。

複数シートを非表示

複数シートを非表示にしたい場合は、「For Each WS In Worksheets(Array("B", "C"))」として、シート「B」と「C」をループして、非表示にします。

'シート「B」と「C」を表示
Sub TEST5()
    
    Dim WS
    
    'シート「B」と「C」をループ
    For Each WS In Worksheets(Array("B", "C"))
        WS.Visible = True 'シートを表示
    Next
    
End Sub

「A」~「D」のシートを用意しました。

「A」~「D」のシートを用意

「A」~「D」のシートを用意しました

では、VBAコードを実行してみます。

「B」と「C」のシートを非表示にできた

「B」と「C」のシートを非表示にできました

「B」と「C」のシートを非表示にできました。

複数シートを表示

複数シートを表示したい場合は、「For Each WS In Worksheets(Array("B", "C"))」として、シート「B」と「C」をループして、シートを表示します。

'シート「B」と「C」を非表示
Sub TEST6()
    
    Dim WS
    
    'シート「B」と「C」をループ
    For Each WS In Worksheets(Array("B", "C"))
        WS.Visible = False 'シートを非表示
    Next
    
End Sub

「B」~「D」を非表示にしたシートを用意しました。

「B」~「D」が非表示のシートを用意

「B」~「D」が非表示のシートを用意しました

では、VBAコードを実行してみます。

「B」と「C」のシートを表示できた

「B」と「C」のシートを表示できた

「B」と「C」のシートを表示できました。

VBAで指定した複数シートのみを表示

指定した複数シートのみを表示する、というのをやってみます。

1つのシートだけの表示ではなく、指定した複数のシートのみを表示させて、それ以外は非表示にしたいといった場合に使えます。

指定シートのみを表示して複数シートを表示する

手順としては、次のようになります。

  • 指定シートの1つのみを表示
  • 指定した複数シートを表示

という流れです。

「B」と「D」のシートのみを表示してみます。

指定した複数シートのみを表示するVBAコードはこちらです。

'シート名「B」と「D」のみを表示
Sub TEST7()
    
    Dim A
    '表示するシート名の配列を作成
    A = Array("B", "D")
    
    Dim WS
    'シート名「B」のみを表示する
    For Each WS In Worksheets
        'シート名が「B」以外のとき
        If WS.Name <> A(0) Then
            WS.Visible = False 'シートを非表示にする
        End If
    Next
    
    'シート名「B」と「D」を表示する
    For Each WS In Worksheets(A)
        WS.Visible = True 'シートを表示
    Next
    
End Sub

最初に「B」のシートのみを表示して、「B」と「D」のシートを表示しています。

これで指定した複数のシートのみを表示することができます。

用意したシートはこちらです。

「A」~「D」のシートを用意

シート名がA~Dのシートを用意

シート名が「A~D」のシートを用意しました。

では、VBAコードを実行してみます。

「B」と「D」のみを表示できた

シート名がBもしくはD以外のシートを非表示にする

シート名が「B」と「D」のシートだけが表示されて、それ以外は非表示となりました。

おわりに

この記事では、Excelのシートを非表示にする方法についてご紹介しました。

シートを非表示にすることでシートの可読性が良くなります。

それをVBAコードから操作できるようになると、作業効率が上がります。

シートの非表示や表示をVBAを使って、自動化していきましょう。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す