Hiding Row depending on Drop down list

%3CLINGO-SUB%20id%3D%22lingo-sub-2985530%22%20slang%3D%22en-US%22%3EHiding%20Row%20depending%20on%20Drop%20down%20list%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2985530%22%20slang%3D%22en-US%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20have%20a%20spreadsheet%20I%20am%20trying%20to%20create%20where%20I%20have%20a%20range%20of%207%20different%20values%20in%20a%20drop%20down%20list.%20What%20I%20to%20happen%20is%20when%20I%20select%20a%20certain%20entry%20from%20the%20drop%20down%20list%20that%20a%20number%20of%20different%20rows%20on%20the%20spreadsheet%20will%20be%20hidden%20depending%20on%20the%20entry%20selected%20from%20the%20drop%20down.%20Trying%20to%20get%20it%20to%20do%20this%20automatically%20when%20the%20drop%20down%20selection%20is%20changed.%20I%20know%20this%20is%20to%20be%20done%20through%20VBA%20but%20a%20bit%20of%20help%20as%20to%20how%20to%20start%20getting%20this%20rolling%20would%20be%20greatly%20appreciated.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EMany%20Thanks%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2985530%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EMacros%20and%20VBA%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2985591%22%20slang%3D%22en-US%22%3ERe%3A%20Hiding%20Row%20depending%20on%20Drop%20down%20list%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2985591%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F1224078%22%20target%3D%22_blank%22%3E%40PeterWallinger%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELet's%20say%20the%20dropdown%20is%20in%20B1%2C%20and%20its%20values%20are%20Text1%2C%20Text2%2C%20...%2C%20Text7.%3C%2FP%3E%0A%3CP%3ERight-click%20the%20sheet%20tab.%3C%2FP%3E%0A%3CP%3ESelect%20'View%20Code'%20from%20the%20context%20menu.%3C%2FP%3E%0A%3CP%3ECopy%20the%20following%20code%20into%20the%20worksheet%20module%3A%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-visual-basic%22%3E%3CCODE%3EPrivate%20Sub%20Worksheet_Change(ByVal%20Target%20As%20Range)%0A%20%20%20%20'%20Has%20the%20cell%20with%20the%20dropdown%20changed%3F%0A%20%20%20%20If%20Not%20Intersect(Range(%22B1%22)%2C%20Target)%20Is%20Nothing%20Then%0A%20%20%20%20%20%20%20%20Application.ScreenUpdating%20%3D%20False%0A%20%20%20%20%20%20%20%20Application.EnableEvents%20%3D%20False%0A%20%20%20%20%20%20%20%20'%20Unhide%20all%20rows%20in%20the%20relevant%20range%0A%20%20%20%20%20%20%20%20Range(%22A4%3AA59%22).EntireRow.Hidden%20%3D%20False%0A%20%20%20%20%20%20%20%20'%20Inspect%20the%20value%20of%20the%20dropdown%0A%20%20%20%20%20%20%20%20Select%20Case%20Range(%22B2%22).Value%0A%20%20%20%20%20%20%20%20%20%20%20%20Case%20%22Text1%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Range(%22A4%3AA11%22).EntireRow.Hidden%20%3D%20True%0A%20%20%20%20%20%20%20%20%20%20%20%20Case%20%22Text2%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Range(%22A12%3AA19%22).EntireRow.Hidden%20%3D%20True%0A%20%20%20%20%20%20%20%20%20%20%20%20Case%20%22Text3%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Range(%22A20%3AA27%22).EntireRow.Hidden%20%3D%20True%0A%20%20%20%20%20%20%20%20%20%20%20%20Case%20%22Text4%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Range(%22A28%3AA35%22).EntireRow.Hidden%20%3D%20True%0A%20%20%20%20%20%20%20%20%20%20%20%20Case%20%22Text5%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Range(%22A36%3AA43%22).EntireRow.Hidden%20%3D%20True%0A%20%20%20%20%20%20%20%20%20%20%20%20Case%20%22Text6%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Range(%22A44%3AA51%22).EntireRow.Hidden%20%3D%20True%0A%20%20%20%20%20%20%20%20%20%20%20%20Case%20%22Text7%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Range(%22A52%3AA59%22).EntireRow.Hidden%20%3D%20True%0A%20%20%20%20%20%20%20%20End%20Select%0A%20%20%20%20%20%20%20%20Application.EnableEvents%20%3D%20True%0A%20%20%20%20%20%20%20%20Application.ScreenUpdating%20%3D%20True%0A%20%20%20%20End%20If%0AEnd%20Sub%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EChange%20the%20code%20as%20needed.%3C%2FP%3E%0A%3CP%3ESwitch%20back%20to%20Excel.%3C%2FP%3E%0A%3CP%3ESave%20the%20workbook%20as%20a%20macro-enabled%20workbook%20(.xlsm)%3C%2FP%3E%0A%3CP%3EMake%20sure%20that%20you%20allow%20macros%20when%20you%20open%20it.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2992041%22%20slang%3D%22en-US%22%3ERe%3A%20Hiding%20Row%20depending%20on%20Drop%20down%20list%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2992041%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F127945%22%20target%3D%22_blank%22%3E%40Hans%20Vogelaar%3C%2FA%3E%26nbsp%3BThanks%20muchly%20for%20that%20Hans.%20It%20has%20worked%20a%20treat.%3C%2FP%3E%3C%2FLINGO-BODY%3E
New Contributor

Hi,

 

I have a spreadsheet I am trying to create where I have a range of 7 different values in a drop down list. What I to happen is when I select a certain entry from the drop down list that a number of different rows on the spreadsheet will be hidden depending on the entry selected from the drop down. Trying to get it to do this automatically when the drop down selection is changed. I know this is to be done through VBA but a bit of help as to how to start getting this rolling would be greatly appreciated.

 

Many Thanks

2 Replies

@PeterWallinger 

Let's say the dropdown is in B1, and its values are Text1, Text2, ..., Text7.

Right-click the sheet tab.

Select 'View Code' from the context menu.

Copy the following code into the worksheet module:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Has the cell with the dropdown changed?
    If Not Intersect(Range("B1"), Target) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        ' Unhide all rows in the relevant range
        Range("A4:A59").EntireRow.Hidden = False
        ' Inspect the value of the dropdown
        Select Case Range("B2").Value
            Case "Text1"
                Range("A4:A11").EntireRow.Hidden = True
            Case "Text2"
                Range("A12:A19").EntireRow.Hidden = True
            Case "Text3"
                Range("A20:A27").EntireRow.Hidden = True
            Case "Text4"
                Range("A28:A35").EntireRow.Hidden = True
            Case "Text5"
                Range("A36:A43").EntireRow.Hidden = True
            Case "Text6"
                Range("A44:A51").EntireRow.Hidden = True
            Case "Text7"
                Range("A52:A59").EntireRow.Hidden = True
        End Select
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End If
End Sub

Change the code as needed.

Switch back to Excel.

Save the workbook as a macro-enabled workbook (.xlsm)

Make sure that you allow macros when you open it.

@Hans Vogelaar Thanks muchly for that Hans. It has worked a treat.