Excel VBA 全てのシートを再表示するマクロ ついでに非表示にしまくるマクロも。

Excel マクロ、VBA

スポンサーリンク

複数シートの非表示はできても再表示はできない

Excel シートの非表示・再表示をする方法 あまりやるものではないが・・・

前回の記事で、Excelのシートを非表示にする方法なんてのと、また再表示する方法とを紹介した。

しかし困ったことに、複数のシートを非表示にすることはできても、複数のシートを再表示することは何故かできない。

下記の動画でも、複数シートを非表示にした後で、複数シートの再表示にチャレンジしているが、それはできないのだ。
1枚ずつ再表示するしかない。

それもあって、シートの非表示なんてそうそうやるものではなく、多くの場合は迷惑行為だ。

全てのシートを再表示するマクロ

しかしもしかしたら万一、上記動画のように複数シートをいっぺんに非表示にするなんてこと、手が滑ったりしてやってしまうかもしれない。

そういう時、全てのシートを再表示した状態に戻すマクロを作ってみた。

なんのことはなく、全てのシートに対して順に、再表示を掛けているだけのマクロだ。

複数シートを非表示にし、このマクロで全て再表示する動作イメージを動画にした。

このマクロ、そう頻繁に使うとも思えないが、もし使うことがあるなら個人用マクロブックに組み込むと良いだろう。

個人用マクロブックとかについては、ここを展開。

オリジナルのマクロをリボンに追加する方法はこちら

個人用マクロブックについては、こちらこちらで述べています。

 

選択されたシート以外全て非表示にするマクロ

では、上記マクロの逆で、特定のシート以外は全て非表示にするマクロなんてのもあると良い・・・かもしれない。

いやまあ、100個あるシートの中で3個だけを人にはお見せしたいとか、そういう場合にね。

でも普通はそういうの、3個のシートを切り離してなおかつ計算式のリンクも外すとかやれば済む話で、そういう手っ取り早い方法は別の記事で紹介している。

Excel VBA リンクを解除するマクロ→リンク解除した上でシートを切り離す 個人用マクロブックに組み込んで使おう

ただその方法も、切り離したシートを別名保存するとかの手間は必要になり得る。
そういう手間もひたすら省きたいというなら、特定のシート以外は全て非表示にするのが良い場合もあるかもしれない。

そこで、予め選択しておいたシート以外は非表示にするってマクロも、作ってみた。

ちょっとしたソースコード解説

シート名の検索に、連想配列というやつを使っている。
これは重複チェックとかで重宝するやつだけどね。

この連想配列を使うには、「Microsoft Scripting Runtime」というやつの事前設定が必要で、それについては別の個人用マクロブックに関する説明記事を参照。

Excel 個人用マクロブック マクロ追加可能状態にする

あと、VBAで複数シートを選択するには、
ActiveWindow.SelectedSheets
といったように、まずウインドウWindowを指定してからその中のSelectedSheetsというやつを指定しないといけない。

単一シートなら「ActiveSheet」とか指定すればいいんだけど、複数シートの場合はWindowの指定を前に置かないといけないのが面倒。

これについては別記事でも取り上げている。

Excel VBA リンクを解除するマクロ→リンク解除した上でシートを切り離す 個人用マクロブックに組み込んで使おう

再表示・非表示のマクロを組み合わせて使う

ただ、繰り返し述べるがシートの非表示なんて、基本的には迷惑行為なので乱用は禁物。

この非表示マクロ「selectedSheetOnlyVisible」が劇薬で、その前に述べた全部再表示マクロ「displayAllSheets」が解毒薬みたいなものだ。

この両方のマクロを使った動作イメージが、下記の動画になる。

まず「3日」「5日」「7日」「8日」「10日」と離れたシートを選択しておいて、それ以外のシートを非表示にする。
そして次に、全てのシートを再表示して元に戻しているわけだ。

スポンサーリンク