以前の投稿( セル値に基づいて行を非表示または再表示するVBAコード )に基づいていくつかのアドバイスに従い、ドロップダウンリストに基づいて特定の行を表示/非表示できるようにマクロを作成しようとしました。私はそれを手に入れるのにかなり近いですが、私の式の少なくとも一部が機能していません。これが私が使っているものです:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D13").Value = "Unlimited" Then
Rows("77").EntireRow.Hidden = True
ElseIf Range("D13").Value = "Unlimited" Then
Rows("78:82").EntireRow.Hidden = False
End If
If Range("D13").Value = "Limited" Then
Rows("78:82").EntireRow.Hidden = True
ElseIf Range("D13").Value = "Limited" Then
Rows("77").EntireRow.Hidden = False
End If
If Range("D13").Value = "Select one" Then
Rows("78:82").EntireRow.Hidden = False
ElseIf Range("D13").Value = "Select one" Then
Rows("77").EntireRow.Hidden = False
End If
End Sub
この式では、ユーザーが選択したものに基づいて、ドロップダウンリストの選択の下に表示される行に影響を与えようとしています。ドロップダウンリストのあるセルはD13です。可能な値は3つあります。制限付き、無制限、1つを選択します。これが私が目指していることです:
上記のコードは多少一貫性がないようです。各ドロップダウンに設定した関数が予期せず重複しているかどうかわからない場合は、現在、私の機能は、[1つ選択]-> [制限付き/無制限]から変更した場合にのみ期待どおりに機能しますが、後で別の選択に変更すると、機能を継続できません。
誰でも助けがあれば大歓迎です!!現在この髪の毛を少し引き裂いています。前もって感謝します :)
以下のコードの最初の行はWorksheet_Changeを処理します。変更されたセルは1つだけで、セルはD13でした。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D13")) Is Nothing Or Target.Cells.Count > 1 Then
Exit Sub
ElseIf Range("D13").Value = "Select One" Then
Rows("77:82").EntireRow.Hidden = False
ElseIf Range("D13").Value = "Limited" Then
Rows("77").EntireRow.Hidden = False
Rows("78:82").EntireRow.Hidden = True
ElseIf Range("D13").Value = "Unlimited" Then
Rows("77").EntireRow.Hidden = True
Rows("78:82").EntireRow.Hidden = False
End If
End Sub
上記のコードは、ドロップダウンがオンになっているシートのWorksheetオブジェクトにコピーする必要があることに注意してください。
これがお役に立てば幸いです。