大体でIT
大体でIT
2020/9/25
Excel VBAで、エクセルのシートを非表示にしたり表示するには、「Visible」を使います。すべてのシートを表示したり、指定したシートのみの表示、複数シートの非表示や表示する方法について、解説していきます。VBAを使ってシートの非表示や表示を自動化していきましょう。
この記事では、Excelのシートを非表示にする方法について、ご紹介します。
シートを非表示にすることでシートの可読性が良くなります。
シート操作をVBAコードからできるようになると、作業効率が上がります。
VBAを使って、シートの操作を自動化していきましょう。
では、シートを非表示にする方法について、解説していきます。
Excel VBAでシートを「非表示」にするVBAコードは、このようになります。
'シートを非表示
Sub TEST1()
'シート名「A」を非表示にする
Worksheets("A").Visible = False
End Sub
シートを非表示にするには、「オブジェクト名.Visible = False」とすればできます。
このVBAコードではシート名が「A」のシートを非表示にする、というコードを記載しています。
シートを非表示にするVBAコードを実行してみます。
用意したシート
シート「A」を非表示にできた
非表示となっているシートを表示するVBAコードは、このようになります。
'シートを表示
Sub TEST2()
'シート名「A」を表示する
Worksheets("A").Visible = True
End Sub
シートを表示にするには「オブジェクト名.Visible = True」とすればできます。
このVBAコードではシート名が「A」のシートを表示する「Worksheets("A").Visible = True」としています。
シート名が「A」のシートをあらかじめ非表示にしてあります。
シート「A」が非表示となっているシート
シート「A」を表示できた
エクセルで資料等を作成していくなかで、一旦シートを非表示にしておいたシートをすべて表示させたいといった場合に使えます。
すべてのシートを表示させには、「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コードをご紹介します。
指定したシートだけを表示してそれ以外のシートは見えないようにしたい場合に使えます。
シート名が「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」以外のシートが非表示になりました。
指定したシートだけを表示して、それ以外を非表示にしたいといった場合に使えます。
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」のシートを用意
「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」と「C」のシートを表示できた
指定した複数シートのみを表示する、というのをやってみます。
1つのシートだけの表示ではなく、指定した複数のシートのみを表示させて、それ以外は非表示にしたいといった場合に使えます。
指定シートの1つのみを表示
指定した複数シートを表示
指定した複数シートのみを表示する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」のシートを用意
「B」と「D」のみを表示できた
シート名が「B」と「D」のシートだけが表示されて、それ以外は非表示となりました。
この記事では、Excelのシートを非表示にする方法についてご紹介しました。
シートを非表示にすることでシートの可読性が良くなります。
それをVBAコードから操作できるようになると、作業効率が上がります。
シートの非表示や表示をVBAを使って、自動化していきましょう。
参考になればと思います。最後までご覧くださいましてありがとうございました。