非表示の行や列を探すには

Excelの非表示機能は便利ではありますが、見た目では非表示になっていることが分かりにくいため探すのが結構大変です。

そこで、ここではVBAを使って非表示になっている行や列を見つける方法を紹介します。

行と列の非表示はコードとしては大体同じですが、実際に使う場合は「列だけ」もしくは「行だけ」の場合が多いため、それぞれを分けて紹介します。


非表示の行を探す方法

非表示の行を探すには、「Rows(行位置).Hidden」プロパティの値を確認します。HiddenプロパティがTrueの場合は非表示、Falseの場合が表示と判定します。

以下の関数はアクティブシートのセル編集範囲の先頭行目から最終行までで、非表示の行があればイミディエイトウィンドウに出力します。

UsedRangeオブジェクトを使って検索範囲を編集セルしている箇所に限定しています。単純に1行目から1048576行目まで検索すると性能が良いPCでも数秒程度は掛かりますが、この方法は編集セル範囲に限定されることによりループ回数がその行数分しか行わないため高速に終了します。



非表示の列を探す方法

非表示の列を探すには、「Columns(列位置).Hidden」プロパティの値を確認します。Hiddenプロパティは行の場合と同様で、Trueの場合は非表示、Falseの場合が表示と判定します。

以下の関数はアクティブシートの1列目から一番右の列までで、非表示の列があればイミディエイトウィンドウに出力します。

上の行の場合と異なりUsedRangeは使っていませんが、Excelの列数は少ないためそこまで速度低下はないことと、列の場合はUsedRangeを使うと範囲外の非表示列を検出できない問題があるため1列目から最終列まで検索する方法を採用しています。

関数が2つありますが、2つ目の関数は列の位置を英字で出力したい場合のための、列数字→英字の変換関数です。変換が不要であればコメントアウトしている数字での出力でOKです。