VBA

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

More than 1 year has 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