Excelのシートが表示されないときはないでしょうか。
けど、そんな中で悩むことは、
・別ブックの非表示シートを一括で再表示させたいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VBAで別ブックのシートの表示/非表示をチェックし一括で再表示させる方法
についてまとめます!
もくじ
シートが表示されない原因①:シート見出しが非表示に設定されている
シートが表示されない原因①はシート見出しが非表示に設定されているケースです。
シートはブック内で表示/非表示をする設定ができますが、これを非表示に設定するとシート全体が見えなくなります。
シート見出しを表示するにチェックがない場合が該当します。
シートが表示されない原因②:シートが隠れている
シートが表示されない原因②はシートが隠れているケースです。
表示面積が小さいモニターだと、ウインドウ幅が狭いためにシートタブが隠れてしまうことがあります。
シートが表示されない原因③:シートが非表示になっている
シートが表示されない原因③はシートが非表示になっているケースです。
シートの表示/表示を切り替えられますが、非表示に設定するとシートが見えない状態となります。
シートが表示されない原因①:シート見出しが非表示に設定されている場合の対処法
シートが表示されない原因①のシート見出しが非表示に設定されている場合の対処法について説明をします。
「シート見出しを表示する」を有効にします。
「ファイル」>「オプション」>「詳細設定」をクリックします。
「次のブックで作業するときの表示設定」項目の「シート見出しを表示する」に チェックを入れ、「OK」をクリックします。
シートが表示されない原因②:シートが隠れている場合の対処法
シートが表示されない原因②のシートが隠れている場合の対処法について説明をします。
ウインドウを最大化するか、スライドさせ隠れているシートを表示させます。
スクロールバーの端にある「・・・」をクリックし、
隠れているシートタブを表示していきます。
シートが表示されない原因③:シートが非表示になっている場合の対処法
シートが表示されない原因③のシートが非表示になっている場合の対処法について説明をします。
表示されているシートタブを右クリックし、「再表示」をクリックします。
ダイアログ ボックスで、再表示したいシートを選択し、「OK」 をクリックします。
ツール:別ブックのシートの表示/非表示をチェックし一括で再表示させる
VBAで別ブックのシートの表示/非表示をチェックし一括で再表示させる方法について説明をします。
サンプルは6シート中、
4シートを非表示にしたものと、
シート見出しを表示に設定したものを使用します。
VBAコード
VBAは以下の通りです。
Sub 指定ブックのシート表示状態をチェックし再表示する()
Dim objSheet As Object
Dim objWb As Workbook
Dim strFilePass As Variant
Dim strResult As String
Dim msgRt As VbMsgBoxResult
'ファイルを開くダイアログを表示し、選択したファイルのパスを変数に代入します。
strFilePass = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls;*.xlsx;*.xlsm")
'ファイルパスがあれば処理を継続します。
If strFilePass <> False Then
'ブックファイルのパスを指定します。
Set objWb = Workbooks.Open(strFilePass)
'メッセージのヘッダー部分を変数へ代入します。
strResult = "■各シートの表示状況(-1:表示、0:非表示)" & vbCrLf
'Sheetsコレクションからシートオブジェクトを取得します。
For Each objSheet In objWb.Sheets
'該当シートの名前と表示状態を変数に代入していきます。
strResult = strResult & objSheet.Name & ":"
strResult = strResult & objSheet.Visible & vbCrLf
Next
'メッセージのヘッダー部分を変数へ代入します。
strResult = strResult & "■ブックのシート見出し(True:表示、False:非表示)" & vbCrLf
strResult = strResult & Windows(objWb.Name).DisplayWorkbookTabs & vbCrLf
'確認ダイアログを表示し、OKの場合処理を進めます。
If MsgBox(vbCrLf & vbCrLf & strResult & "すべてのシートを表示しますか?", vbYesNo + vbQuestion) = vbYes Then
'Sheetsコレクションからシートオブジェクトを取得します。
For Each objSheet In objWb.Sheets
'該当シートを表示させます。
objSheet.Visible = True
Next
'シート見出しを表示します。
Windows(objWb.Name).DisplayWorkbookTabs = True
MsgBox "すべてのシートを表示しました。"
Else
MsgBox "中止しました。"
End If
'オブジェクトを解放します。
Set objWb = Nothing
Else
MsgBox "キャンセルしました。"
Exit Sub
End If
End Sub
VBAの実装
シートの指定範囲をCSV出力するVBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行
シートを表示させるブックを選択し、VBAを実行しましょう。
ファイル選択のダイアログが表示されたらシート表示状態をチェックしたいブックを選択します。
「開く」をクリックし、表示されたメッセージからシート表示状態のチェックをします。
表示されていないシートが確認できたら「はい」をクリックし表示処理をおこないます。
はい、すべてのシートが表示されましたね。
次にシート見出しが非表示であるブックを選択し、表示状態になるか確認をしてみましょう。
VBAを実行し、メッセージから状態を確認します。
確認出来たら「はい」をクリックし処理を継続します。
はい、シート見出しが表示されましたね。
VBAの説明
VBAについて説明をします。
ファイルを開くダイアログを表示し、選択したファイルのパスを変数に代入します。
strFilePass = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls;*.xlsx;*.xlsm")
ファイルパスがあれば処理を継続します。
If strFilePass <> False Then
ブックファイルのパスを指定します。
Set objWb = Workbooks.Open(strFilePass)
メッセージの一つ目ヘッダーを変数へ代入します。
strResult = "■各シートの表示状況(-1:表示、0:非表示)" & vbCrLf
Sheetsコレクションからシートオブジェクトを取得します。
For Each objSheet In objWb.Sheets
該当シートの名前と表示状態を変数に代入していきます。
strResult = strResult & objSheet.Name & ":" strResult = strResult & objSheet.Visible & vbCrLf
メッセージの2つ目ヘッダーを変数へ代入します。
strResult = strResult & "■ブックのシート見出し(True:表示、False:非表示)" & vbCrLf
シート見出しの状態を変数へ代入します。
strResult = strResult & Windows(objWb.Name).DisplayWorkbookTabs & vbCrLf
確認ダイアログを表示し、OKの場合処理を進めます。
If MsgBox(vbCrLf & vbCrLf & strResult & "すべてのシートを表示しますか?", vbYesNo + vbQuestion) = vbYes Then
Sheetsコレクションからシートオブジェクトを取得します。
For Each objSheet In objWb.Sheets
該当シートを表示させます。
objSheet.Visible = True
シート見出しを表示します。
Windows(objWb.Name).DisplayWorkbookTabs = True
オブジェクトを解放します。
Set objWb = Nothing
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・VBAで別ブックのシートの表示/非表示をチェックし一括で再表示させる方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す