エクセルVBAでリストの中から不要な行や列を非表示にする方法

小さなお店ではスタッフのシフト表をエクセルで管理している事が多いと思いますが、時間別出勤リストを表示させるときにお休みの人は非表示にして見やすくしたいと思いませんか?
Excel-VBAを使えば簡単に不要な行や列を非表示にしたり再表示させる方法をご紹介します。
Hiddenプロパティ
Hiddenプロパティを使う事により、個別の行や列に対して表示・非表示の設定ができるようになります。
これにより、IFステートメントを組み合わせることで、条件に応じて非表示にしたり、再表示させることが簡単にできるようになりますので、まずは基本的な使い方からご紹介します。
決まった1行を非表示にする
例えば3行目を非表示にするだけならば、ユーザーフォームに配置したコマンドボタンに下記VBAコードを書くだけです。
Private Sub CommandButton1_Click()
Rows(3).Hidden = True
End Sub
- コマンドボタン1がクリックされたら
- 3行目を非表示にする
- マクロ記録終了
たったこれだけですが、実用的ではありませんね。
決まった範囲の行を非表示にする
これも実際には使っていないのですが、複数行(例えば3行目~5行目)を非表示にするには、下記のようなVBAコードを記載します。
Private Sub CommandButton1_Click()
Rows(“3:5”).Hidden = True
End Sub
- コマンドボタン1がクリックされたら
- 3行目~5行目を非表示にする
- マクロ記録終了
非表示した行を表示させる
次に、非表示にしてある行を表示させるには、Trueの部分をFalseに代えるだけです。
決まった1列を非表示にする
行の次は列の日表示させる方法をご紹介します。
行の時と同様に3列目を非表示にするだけならば、行の部分「Rows」を列を表す「Columns」に置き換えて、3列目はC列に代えるだけです。
Private Sub CommandButton1_Click()
Columns(“C”).Hidden = True
End Sub
- コマンドボタン1がクリックされたら
- C列を非表示にする
- マクロ記録終了
行の時と異なるのは、()内が数字ならば(3)と記載するだけなのですが、列の場合はアルファベットなので(“C”)と””が必要になることぐらいです。
決まった範囲の列を非表示にする
複数列の場合も行の時と同じなので3列目から5列目は、C列~E列となります。
Private Sub CommandButton1_Click()
Columns(“C:E”).Hidden = True
End Sub
このように行と列を非表示・表示させ方法は同じように扱うことができますし、表示方法も同じTrueをFalseにするだけです。
そして、行と列を同時に行うならば続けてVBAコードを記載すれば可能です。
Private Sub CommandButton1_Click()
Rows(“3:5”).Hidden = True
Columns(“C:E”).Hidden = True
End Sub
それでは、次に実用的な条件に応じて行を非表示にする例としてのVBAコードをご紹介します。
条件に応じて行を非表示にする
セルA1の値が0の時に非表示にして、それ以外ならば表示させるVBAコードです
Private Sub CommandButton1_Click()
If Range(“A1”).Value = 0 Then
Rows(1).Hidden = True
Else
Rows(1).Hidden = False
End If
End Sub
- コマンドボタン1がクリックされたら
- もしセルA1の値が0だったら
- 1行目を非表示にする
- そうでなかったら
- 1行目を表示する
- IFステートメント終了
- マクロ記録終了
このように使えば条件に応じて表示・非表示ができますよ。