Excelシートの非表示を解除するのは簡単ですが、面倒な場合があります。このシンプルなマクロを使えば、Excelブック内のすべての非表示シートを表示できます。
シートを非表示にする理由は様々ですが、ほとんどの場合、他の人がシートにアクセスできないようにするためです。自分自身からシートを隠すことはほとんどありません。ユーザーのワークブックを更新または修正する必要がある場合、非表示のシートを覚えておき、表示する必要があります。ワークブックから非表示機能を削除していない限り、これは簡単です。
シートを非表示解除するには、任意のシートタブをクリックし、コンテキストメニューから「非表示解除」を選択します。次に、リストから非表示解除したいシートを選択し、「OK」をクリックします。この方法は簡単ですが、シートが複数ある場合は面倒です。
非表示のシートをすべて表示するために、これを何度も繰り返す必要はありません。以下の簡単なマクロをコピーすれば、ほぼすべてのワークブックにコピーして、シートを素早く表示できます。
サブUnhideAllSheets()
'ワークブック内のすべてのシートを再表示します。
Dim ws As ワークシート
ActiveWorkbook.Worksheets 内の各 ws
ws.Visible = xlSheetVisible
次のWS
終了サブ
簡単に言うと、For Each ループは Worksheets コレクション内のすべてのシートを循環的に処理し、各シートの Visible プロパティを true に設定します。このマクロは、Visual Basic Editor のプロパティ (xlSheetVeryHidden) で非表示にしたシートも再表示するため、適用方法には注意してください。
マクロを実行するには、「開発」タブの「コード」グループで「マクロ」をクリックします。または、QATまたはカスタムタブに追加します。
他のマクロと同様に、このマクロのメリットは限られています。非表示のシートが少数で、表示する必要がほとんどない場合は、手動で表示するのも簡単です。一方、頻繁に表示する必要がある場合は、このマクロが役立つでしょう。
これは、オブジェクトコレクションを循環処理するのがいかに簡単かを示す良い例です。VisibleプロパティをチェックするIf()文を追加し、必要なオブジェクトだけを変更することもできますが、このループの方が効率的です。すべてをリセットするだけで済みます。この場合、If()文は処理を増やすだけです。ただし、特定のシートや「非常に隠れている」シートの表示を避けたい場合は、If()文が役立ちます。

スーザン・ハーキンス
スーザン・セールス・ハーキンスは、デスクトップソリューションを専門とするITコンサルタントです。以前は、世界最大の技術雑誌出版社であるコブ・グループの編集長を務めていました。