EnjomonWeb

Excel VBAの画像
2023/12/23

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)

 .Visible = Not .Visible

シートの表示・非表示はVisibleプロパティで行います。

Visibleプロパティ

Worksheets("シート名").Visible = False or True

指定したシートを、Trueで表示・Falseで非表示にします。

True・Falseを使用するプロパティでは、Notを使用することで反転が可能となり、表示中なら非表示へ、非表示であれば再表示されます。

繰り返し処理

End With
Next i

最後にWithステートメントの終了、繰り返しのためNext iで終了となります。

以上、複数のワークシートをまとめて表示・非表示にする方法でした。

応用することで幅広く効率化に活用できそうな気もしますね!

Excel VBAの画像

ユーザーフォームを使用した入力フォームの作り方

Excel VBAの画像

週ごとに縦に並んだ表を横並びにする方法 | Find&Set

Excel VBAの画像

セルに入力された日付を取得し自動でシートとファイルを作る方法

Excel VBAの画像

検索窓にキーワードを入力しEnterキーで検索するフォームの作り方 | Intersect

Excel VBAの画像

ブックを開いた時のウィンドウサイズを指定する方法 | workbook_open

Excel VBAの画像

新規ブックを作成しマクロが登録されたボタンを設置する方法 | OnAction

Excel VBAの画像

複数のワークシートをまとめて表示・非表示にする方法 | Visible Not.Visible

Excel VBAの画像

セル位置が変わっても特定の範囲を選択する方法 | Find&Address

Excel VBAの画像

電話番号からハイフンを削除し0から表示させる方法 | Evaluate&Replace

Excel VBAの画像

ダイアログボックスからファイルを選択して開く | GetOpenFilename

About

EnjomonWebは、「えんじょもん」である元転勤族の管理人が石川県金沢市から発信する、WEB制作情報をメインとした情報発信サイトです。

コーディング習得過程で検索してもすぐに解決しなかったことや、初心者には分かりづらい内容を分かりやすく説明することができるサイトを目指しています。

※「えんじょもん」とは金沢弁で「遠方の人、県外出身の人」という意味の方言。