[[20180307144231]] 『エクセルの結果によって列を表示したり非表示にし』(ミクロマン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルの結果によって列を表示したり非表示にしたい』(ミクロマン)

 セルZ1に計算式により結果が表示されます。
 結果は28,29,30,31の4種類のみです。
 結果が28の場合はO,P,Q列を非表示に29の場合はOは表示P,Qを非表示
 30の場合はO,Pは表示Qのみ非表示、31は全部表示したいです。
 よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 Sub test()

     Columns("O:Q").EntireColumn.Hidden = False

     If Range("Z1").Value = 28 Then Columns("O:Q").EntireColumn.Hidden = True
     If Range("Z1").Value = 29 Then Columns("P:Q").EntireColumn.Hidden = True
     If Range("Z1").Value = 30 Then Columns("Q").EntireColumn.Hidden = True

 End Sub

 でどうでしょうか?
(bi) 2018/03/07(水) 15:05

 Z1セルはどのセルの値によって結果が変わるようになっているのだろうか?

(ねむねむ) 2018/03/07(水) 15:12


 biさんありがとうございます。
 出来ればZ1に数値が入力されたら自動でしたいです。

 ねむねむさんありがとうございます。
 E2セルとG2セルの値によって変動します。

 よろしくお願いします。
(ミクロマン) 2018/03/07(水) 15:20

仰っていることが矛盾しています。
 >セルZ1に計算式により結果が表示されます。
 >出来ればZ1に数値が入力されたら

後者の方が正しいのであれば、ワークシートのChangeイベントを使って、biさんのコードを実行すればよいとおもいます。

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("Z1")) Is Nothing Then Exit Sub

    Columns("O:Q").EntireColumn.Hidden = False

    Select Case Range("Z1").Value
        Case Is = 28
            Columns("O:Q").EntireColumn.Hidden = True
        Case Is = 29
            Columns("P:Q").EntireColumn.Hidden = True
        Case Is = 30
             Columns("Q").EntireColumn.Hidden = True
    End Select

End Sub
(もこな2) 2018/03/07(水) 16:23


 biさんのVBAを借りて。
 処理を実行したいワークシートのシートモジュールに
 Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("E2,G2")) Is Nothing Then Exit Sub
    Columns("O:Q").EntireColumn.Hidden = False
    If Range("Z1").Value = 28 Then Columns("O:Q").EntireColumn.Hidden = True
    If Range("Z1").Value = 29 Then Columns("P:Q").EntireColumn.Hidden = True
    If Range("Z1").Value = 30 Then Columns("Q").EntireColumn.Hidden = True
 End Sub
 でどうか。
(ねむねむ) 2018/03/07(水) 16:25

追加で。E2 もしくは、G2への入力をイベント発動条件にするならこうですかね・・と、投稿しようとおもったら、ねむねむさんとモロかぶりしました。
まぁ。。。せっかくなので投稿しておきます。

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Union(Range("E2"), Range("G2"))) Is Nothing Then Exit Sub

    Columns("O:Q").EntireColumn.Hidden = False

    Select Case Range("Z1").Value
        Case Is = 28
            Columns("O:Q").EntireColumn.Hidden = True
        Case Is = 29
            Columns("P:Q").EntireColumn.Hidden = True
        Case Is = 30
             Columns("Q").EntireColumn.Hidden = True
    End Select
(もこな2) 2018/03/07(水) 16:42

↑ end subが抜けていました。 使う場合は最後に追加して下さい。
(もこな2) 2018/03/07(水) 16:45

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.