[[20190410123903]] 『選択したリストに合わせて行を非表示にする方法』(ぐっっち) ページの最後に飛ぶ

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

 

『選択したリストに合わせて行を非表示にする方法』(ぐっっち)

選択したリストに合わせて行を非表示にする方法を教えていただけないでしょうか。

シート1のセルH2に、リストを作成しています。
リストはA、B、C、D、E、Fです。
リストはシート3のセルB6〜11を参照にしています。

リストのC、D、E、Fを選んだらシート1の行8〜14が非表示になるようにしたいです。

さらに、
セルI2にもリストを作り、上記と同じようなことをしたいです。

リストのAを選んだら行25、26と、行29〜31が非表示になるように、
リストのBを選んだら行21〜24、行27,28が非表示になるようにしたいです。

わかりにくくてすみません。
よろしくお願いいたします。

ぐっっち

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


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) <> "H2" And Target.Address(0, 0) <> "I2" Then Exit Sub
    Rows.EntireRow.Hidden = False
    Select Case Target.Value
        Case "C", "D", "E", "F"
        Range("8:14").EntireRow.Hidden = True
        Case "A"
        Range("25:26,29:31").EntireRow.Hidden = True
        Case "B"
        Range("21:24,27:28").EntireRow.Hidden = True
    End Select
End Sub
(mm) 2019/04/10(水) 15:13

ありがとうございます!

実行すると下記のエラーが出てしまいます。
実行時エラー 424 オブジェクトが必要です

初心者すぎてすみません。
解決するには何をすればいいでしょうか。

ぐっっち

(ぐっっち) 2019/04/10(水) 16:21


 1) Sheet1のシート見出しを右クリックして[コードの表示]
 2) 出てきた画面の右空白部分に下記コードを貼り付けて Alt + Q でエクセル画面に戻る

 Private Sub Worksheet_Change(ByVal Target As Range)
     If Intersect(Target, [h2:i2]) Is Nothing Then Exit Sub
     If Target(1).Value = "" Then Exit Sub
     [25:26,29:31].EntireRow.Hidden = Target.Cells(1).Value = "A"
     [21:24,27:28].EntireRow.Hidden = Target.Cells(1).Value = "B"
     [8:14].EntireRow.Hidden = Target.Cells(1).Value Like "[C-F]"
 End Sub
(seiya) 2019/04/10(水) 16:36

ありがとうございます。i2のリストは機能しました。
ただ、h2が機能しません。

セルのh2とi2は全く異なるリストなのですが、
それが関係あるのかもしれないです。

h2のリストは、マゼ、リン、ダー、コロ、リン
したいこと=ダー、コロ、リンを選んだら、[8:14]が消える。マゼ、リンを選んでも何も消えない。

i2のリストは、WEB、本、併用
したいこと=WEBを選んだら、[25:26,29:31]が消える。本を選んだら、[21:24,27:28]が消える。併用を選んだら何も消えない。

どちらのリストも同時に機能させることは可能でしょうか?
初心者で伝わりにくくてすみません。
とても助かっているので、なんとか最後までできるようにしたいです。
よろしくお願いいたします。

ぐっっち
(ぐっっち) 2019/04/10(水) 17:14


 >シート1のセルH2に、リストを作成しています。 
 >リストはA、B、C、D、E、Fです。 

 >h2のリストは、マゼ、リン、ダー、コロ、リン 

 あのね、こういうことするとお互い時間の無駄だよね?

 Private Sub Worksheet_Change(ByVal Target As Range)
     If Intersect(Target, [h2:i2]) Is Nothing Then Exit Sub
     If Target.Address(0, 0) = "H2" Then
         [8:14].EntireRow.Hidden = IsNumeric(Application.Match(Target, Array("ダー", "コロ", "リン"), 0))
     Else

         [25:26,29:31].EntireRow.Hidden = Target.Cells(1).Value = "WEB"
         [21:24,27:28].EntireRow.Hidden = Target.Cells(1).Value = "本"
     End If
 End Sub
(seiya) 2019/04/10(水) 17:33

すみませんでした。
また、丁寧にご対応いただきましてありがとうございます。

無事、上手く機能させることができました。

ぐっっち
(ぐっっち) 2019/04/10(水) 17:44


お世話になります。

上手く機能していたのですが、
編集していると機能しなくなってしまいました。

D5のリストは、マゼ、リン、ダー、コロ、リン
したいこと=ダー、コロ、リンを選んだら、[12:20,40:48]が消える。
マゼ、リンを選んでも何も消えない。

D6のリストがWEB、冊子、併用
したいこと=WEBを選んだら[36:62]が消える。冊子を選んだら[8:39]が消える。併用を選んだら何も消えない。

D5の設定を反映させたまま、D6を反映させたいです。
現状だと、D6を変えると、D5で消えていたセルが出てきてしまいます。

今のは下記になります。

Option Explicit

 Private Sub Worksheet_Change(ByVal Target As Range)
     If Intersect(Target, [D5:D6]) Is Nothing Then Exit Sub
     If Target.Address(0, 0) = "D5" Then
         [12:20,40:48].EntireRow.Hidden = IsNumeric(Application.Match(Target, Array("ダー", "コロ", "リン"), 0))
     Else
         [35:62].EntireRow.Hidden = Target.Cells(1).Value = "WEB"
         [8:35].EntireRow.Hidden = Target.Cells(1).Value = "冊子"
     End If
 End Sub

(ぐっっち) 2019/05/10(金) 21:49


コメント返信:

[ 一覧(最新更新順) ]


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