行・列の表示・非表示設定

Hiddenプロパティを使用して、行・列の非表示設定を行うコード。再表示についても解説します

'選択列の非表示
Selection.EntireColumn.Hidden = True
'選択列の表示
Selection.EntireColumn.Hidden = False

↑列の設定

'選択行の非表示
Selection.EntireRow.Hidden = True
'選択行の表示
Selection.EntireRow.Hidden = False

↑行の設定

'シート全体の行列を表示
Cells.EntireColumn.Hidden = False
Cells.EntireRow.Hidden = False

↑シート全体の一括設定

行・列の表示・非表示の設定には「Hidden」プロパティを使用します
Trueに指定すると非表示、Falseを指定すると表示されます

プロパティの注意点

このプロパティはRangeオブジェクトのプロパティになりますが、指定するにはRangeオブジェクトではエラーが発生します

「Range(“A:A”).Hidden = True」
この様にRangeオブジェクトでA列を指定するとエラーが発生します
必ず行や列を対象にする必要があります

以下の記事に指定セルの行や列をオブジェクトとして扱う方法があります

または、RowsプロパティかColumnsプロパティでも指定することが可能です

いずれにせよ、対象とするのがセル範囲ではなく行列にする必要があるという事なので、Entire~~プロパティを使用するのが便利です

再表示について

再表示については、ワークシートでの操作と少し違います

ワークシートの操作では、C列を非表示にした場合、B~D列を範囲選択して右クリックメニューから再表示を選択します
この様にC列を包括する形で指定することで再表示できます

これに対して、VBAでは非表示の行列のセルが選択可能です
非表示とは、実際には幅が「0」に指定されているだけでそこに存在はしています

なので、C列を非表示にしていても「Range(“C1”).Select」でC1を選択状態にできますので、この状態で例コードの選択セル列を表示すれば再表示が可能です

また、特定の行列を指定する必要がなければシート全体を一括で表示させる5つ目のコードを使用してもいいです

あと、上記にもあるように幅が「0」に設定されているだけなので、その数値を変更する事でも再表示が可能です
以下の記事にあるメソッドを実行しても再表示されます

ちなみに、この記事のメソッドはセルに対しても行えるのでRangeオブジェクトでも実行可能です
Hiddenプロパティとコードの作りは似ていますが、全く別の形になっています