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

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

小さなお店ではスタッフのシフト表をエクセルで管理している事が多いと思いますが、時間別出勤リストを表示させるときにお休みの人は非表示にして見やすくしたいと思いませんか?

Excel-VBAを使えば簡単に不要な行や列を非表示にしたり再表示させる方法をご紹介します。

Hiddenプロパティ

Hiddenプロパティを使う事により、個別の行や列に対して表示・非表示の設定ができるようになります。

これにより、IFステートメントを組み合わせることで、条件に応じて非表示にしたり、再表示させることが簡単にできるようになりますので、まずは基本的な使い方からご紹介します。

決まった1行を非表示にする

例えば3行目を非表示にするだけならば、ユーザーフォームに配置したコマンドボタンに下記VBAコードを書くだけです。

VBAコード

Private Sub CommandButton1_Click()
Rows(3).Hidden = True
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 3行目を非表示にする
  3. マクロ記録終了

たったこれだけですが、実用的ではありませんね。

決まった範囲の行を非表示にする

これも実際には使っていないのですが、複数行(例えば3行目~5行目)を非表示にするには、下記のようなVBAコードを記載します。

VBAコード

Private Sub CommandButton1_Click()
Rows(“3:5”).Hidden = True
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 3行目~5行目を非表示にする
  3. マクロ記録終了

非表示した行を表示させる

次に、非表示にしてある行を表示させるには、Trueの部分をFalseに代えるだけです。

決まった1列を非表示にする

行の次は列の日表示させる方法をご紹介します。

行の時と同様に3列目を非表示にするだけならば、行の部分「Rows」を列を表す「Columns」に置き換えて、3列目はC列に代えるだけです。

VBAコード

Private Sub CommandButton1_Click()
Columns(“C”).Hidden = True
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. C列を非表示にする
  3. マクロ記録終了

行の時と異なるのは、()内が数字ならば(3)と記載するだけなのですが、列の場合はアルファベットなので(“C”)と””が必要になることぐらいです。

決まった範囲の列を非表示にする

複数列の場合も行の時と同じなので3列目から5列目は、C列~E列となります。

VBAコード

Private Sub CommandButton1_Click()
Columns(“C:E”).Hidden = True
End Sub

このように行と列を非表示・表示させ方法は同じように扱うことができますし、表示方法も同じTrueをFalseにするだけです。

そして、行と列を同時に行うならば続けてVBAコードを記載すれば可能です。

VBAコード

Private Sub CommandButton1_Click()
Rows(“3:5”).Hidden = True
Columns(“C:E”).Hidden = True
End Sub

それでは、次に実用的な条件に応じて行を非表示にする例としてのVBAコードをご紹介します。

条件に応じて行を非表示にする

セルA1の値が0の時に非表示にして、それ以外ならば表示させるVBAコードです

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. コマンドボタン1がクリックされたら
  2. もしセルA1の値が0だったら
  3. 1行目を非表示にする
  4. そうでなかったら
  5. 1行目を表示する
  6. IFステートメント終了
  7. マクロ記録終了
波乗りアヒル

このように使えば条件に応じて表示・非表示ができますよ。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

よかったらシェアしてね!
  • URLをコピーしました!