EXCEL

【VBA】キーワードに合致するシートだけを表示させる方法

EXCELを使っていて、沢山のシートタブの中からキーワードに合致するものだけをピックアップして表示したいと思ったことはありませんか?

もし、そのような要望があるならば、この記事がお役に立てるかもしれません。

本記事では、EXCELのVBAプログラムを使って、キーワードに合致するシートタブだけを表示する方法をご紹介致します

キーワードに合致するシートタブだけを表示する方法

EXCELシートの状態

今回動作させるEXCELシートの状態は以下の画像の通りとなります。



操作したい対象のシートは、A1~A3、B1~B3 、C1~C3 、D1~D3の合計12シートあります。これらのシートに対して、例えばA1~A3だけを表示したり、A1、B1、C1、D1だけを表示したりすることが、今回の目的の動作となります。実行ボタンには、あらかじめマクロを登録しておきます。

実行ボタンを押すと、インプットボックスが現れます。



ここに必要な情報(表示したいシートタブ名に含まれる文字)を入力してOKを押すと、対象シートタブだけが表示され終了します。


VBAプログラム

今回ご紹介するのは、次のプログラムとなります。

Sub キーワードに合致するシートタブだけを表示するVBAプログラム()
 
Dim TargetName As String

'<< キーワードを取得する >>
TargetName = Application.InputBox("シート名に含まれる文字を入力して下さい" & vbCr & "  1,2,3,A,B,C ※未入力で全て表示")

'<< キーワードに合致しないシートを非表示化する >>
For Each s In Sheets
 If Not s.Name Like "*" & TargetName & "*" And Not s.Name Like "*マスタ*" Then
  s.Visible = False
 Else: s.Visible = True
 End If
Next s
   
'<< 操作マスタシートに戻る >>
Sheets("操作マスタ").Activate

End Sub

プログラムが長いために見切れますが、スクロールバーを活用して内容をご確認ください。アクティブシート名やインプットボックスのコメントを変えれば用途が広がります。


あるいはセルに入力した値で表示/非表示を切り替えても良いと思います。

余談

以下に記載したのは、今回の趣旨とは若干異なりますが、シートタブの表示/非表示に関わるVBAプログラムです。

アクティブシート以外のシートタブを全て非表示にするVBAプログラム

Sub アクティブシート以外全て非表示VBAプログラム()

Dim ActiveSheetName As String

'<< アクティブシート以外非表示 >>
ActiveSheetName = ActiveSheet.Name
For Each s In Sheets
 If s.Name <> ActiveSheetName Then s.Visible = False
Next s

End Sub

上記のVBAプログラムを実行することで、アクティブシート以外のシートタブを全て非表示にできます。ユーザーに編集してほしくないシートがある時に、このシートで一気に非表示に出来ると便利かもしれません。

全てのシートタブを再表示するVBAプログラム

Sub 全てのシートタブを再表示するVBAプログラム()

'<< 全てのシートを再表示する >>
For Each s In Sheets
 s.Visible = True
Next s

End Sub

上記のVBAプログラムを実行することで、全てのシートタブを再度表示できます。非表示に切り替えたシートタブが複数ある時に、このVBAプログラムを実行して全表示できると便利かもしれません。

最後に

コピペして利用される際には、適宜修正してお使いください。アクティブシート名やインプットボックスのコメントを変えるだけでも用途が広がります。


動作確認環境は、EXCEL2016となります。