Excel VBA 複数のワークシートをまとめて表示・非表示にする方法 | Visible Not.Visible
仕事でVBAを使うことがあり、やりたいことはネットで調べていますが、VBA初心者の私が分かりづらかったものを、初心者でも分かるように説明したいと思います。
効率的なコードが書けていない可能性もありますので、予めご了承ください。
今回はVisibleを使用し、複数のワークシートをまとめて表示・非表示にする方法を紹介します。
使用ケース
例として、以下のような日付毎のシートがあり、それを集計したシート(サマリ)があるとします。
シートがたくさんあって見辛いため、日次データを入力する時だけ日付毎のシートを一括で表示したい、というケースを想定します。
サンプルコード
Sub シート表示切替()
Dim i
For i = 1 To 31
With Worksheets(Format(i, "0"))
.Visible = Not .Visible
End With
Next i
Sheets("サマリ").Select
Range("A1").Select
End Sub
コード解説
For i = 1 To 31
日付毎のシートが1から31となっているため、For文の変数を1~31とします。
With Worksheets(Format(i, "0"))
この後のシートの表示・非表示を切り替えるプロパティを使用するために、Withステートメントでの記述が必要のようです。
そしてWorksheetsで1~31のシートを指定しますが、Formatで数値に変換してあげます。Formatの記述がないと、「左から1番目から31番目のシート」の指定になってしまい、想定していないシートが対象となってしまうため注意が必要です。
.Visible = Not .Visible
シートの表示・非表示はVisibleプロパティで行います。
Worksheets("シート名").Visible = False or True
指定したシートを、Trueで表示・Falseで非表示にします。
True・Falseを使用するプロパティでは、Notを使用することで反転が可能となり、表示中なら非表示へ、非表示であれば再表示されます。
End With
Next i
最後にWithステートメントの終了、繰り返しのためNext iで終了となります。
以上、複数のワークシートをまとめて表示・非表示にする方法でした。
応用することで幅広く効率化に活用できそうな気もしますね!
ユーザーフォームを使用した入力フォームの作り方
週ごとに縦に並んだ表を横並びにする方法 | Find&Set
セルに入力された日付を取得し自動でシートとファイルを作る方法
検索窓にキーワードを入力しEnterキーで検索するフォームの作り方 | Intersect
ブックを開いた時のウィンドウサイズを指定する方法 | workbook_open
新規ブックを作成しマクロが登録されたボタンを設置する方法 | OnAction
複数のワークシートをまとめて表示・非表示にする方法 | Visible Not.Visible
セル位置が変わっても特定の範囲を選択する方法 | Find&Address
電話番号からハイフンを削除し0から表示させる方法 | Evaluate&Replace
ダイアログボックスからファイルを選択して開く | GetOpenFilename