Posted at

【VBA】特定セルに任意値がある場合に特定行を非表示化してみる

More than 3 years have passed since last update.

ちょっと使っているツールに組み込みできないかなと思い、ちょっと検証してみる。

-


0.実現させたこと

ある特定のセル(例えば、A1セル)に「aiueo」という値が入っていた場合に、6行目の行を非表示化、ない場合は表示させるようにVBAを組み込みたい。

できれば、動的になるようにしたいが、とりあえず贅沢言わずにその動作ができるかどうかに注力する。

-


1.使うコマンド(関数)

下記のコマンド(関数)で実現することができそうな感じ。

★例)2行目を非表示

Rows(2).Hidden = True

★例)セルを指定して、そのセルがある行を非表示

Range("A1").EntireRow.Hidden = True

再度、表示したい場合はパラメータを false にする。

-


2.やってみる

テスト用にこんなExcelを作成してみる

kobito.1465100294.976926.png

試してみたいことは、

黄色に塗りつぶしている行と列を非表示・表示させること。

コードを書いてみる。

Sub sample_001()

'7〜10行目を表示
Rows("7:10").Hidden = False
'Q〜U列を表示
Columns("Q:U").Hidden = False

End Sub

Sub sample_002()

'7〜10行目を表示
Rows("7:10").Hidden = True
'Q〜U列を表示
Columns("Q:U").Hidden = True

End Sub

2016-06-05 13_24_08.gif

動作確認ができたので、今度はA1セルに「aiueo」がある場合に非表示、ない場合に表示になるようにコードを書いてみる

Sub sample_003()

'変数定義
a1 = Range("A1").Value
a2 = "aiueo"

'A1セルの値によって表示制御
If a1 = a2 Then
Rows("7:10").Hidden = True
Columns("Q:U").Hidden = True
Else
Rows("7:10").Hidden = False
Columns("Q:U").Hidden = False
End If

End Sub

vba_なし.gif

vba_あり.gif