行や列を非表示にする方法

データを見る際に邪魔な部分や印刷したくない部分などを、表示させたくないことがあります。

そのような場合に行や列を非表示にするには2つの方法があります。

1つはグループ化です。表示と非表示を頻繁に切り替えるのであればExcel上でも操作しやすいグループ化の方が使い勝手がいいです。グループ化については「グループ化の設定と解除」に詳細を書いていますのでそちら参照してください。

もう1つはホームタブ→書式→非表示/再表示 での行や列の非表示です。

この非表示をVBAで行うにはHiddenプロパティを利用します。ここではHiddenプロパティについて説明します。


Hiddenプロパティ

Hiddenプロパティは行または列の表示と非表示を切り替えることができます。

セル範囲を指定することで行と列を同時に非表示にすることが可能です。

行単位または列単位で設定します。


構文

Rangeオブジェクトには表示または非表示にしたい行範囲または列範囲またはセル範囲を指定します。

セル範囲を指定した場合は、そのセル範囲の行と列の表示と非表示が切り替わります。


表示と非表示の切り替え関数

以下の関数は引数で指定されたセル範囲や行範囲や列範囲の表示と非表示を切り替えます。

引数にはRangeオブジェクトを渡します。

関数内部の処理ですが、引数のRangeオブジェクトには上記の通り、セル範囲や行範囲や列範囲が渡されるため、それらに対応するようにしています。

行全体はRowsプロパティ、列全体はColumnsプロパティで表します。これらの2つのプロパティはRangeオブジェクトを返すため、そこにHiddenプロパティを利用することが出来ます。

9行目から16行目は、行と列のどちらが選択されているのかを判定しています。

例えばRange(“A:A”)と指定されている場合はA列が選択されていることになり、A1セルからA最終行セルまでがセル範囲になります。言い方を変えると、列が選択されているということはその列の全ての行が選択されていると判定できます。そこでRange(“A:A”).Rows.Countプロパティでシートの最大行数を取得し、それが引数と一致しているかどうかで列が選択されているのかを判定しています。行も同様です。



テストコード

実行結果

実行前

2行目:E5を非表示

6行目:2行目全体を非表示

9行目:C列とD列を非表示

12行目:A4セルからB5セルの範囲を非表示

再度SetHiddenTest()を実行
非表示だった個所が表示されるように切り替わります。

ちなみに、シート全体を非表示にするとこんな感じになります。

その際は、ホーム→書式→非表示/再表示 で行の再表示と列の再表示を行い、A1セルが表示されますので行は列を右クリックして再表示を行うと、シート全体が再表示されます。