如何使用VBA使用多个下拉列表在Excel中隐藏多个工作表

时间:2015-02-19 14:54:28

标签: excel vba show-hide worksheet

我正在创建一个工作表,根据所选内容打印不同的BOM。我将工作簿中列出的每个BOM都放在不同的工作表下。主工作表将根据需要选择不同的下拉列表来创建必要的BOM。

我想要做的是隐藏不适用于下拉列表中所选项目的工作表。

这就是我现在所拥有的

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Me.Range("Media_System").Address Then
    If Target.Value = "Shop Vac" Then
        Sheets("Shop Vac Media Port Assembly").Visible = True
        Sheets("Shop Vac Assembly").Visible = True
        Sheets("Shop Vac Piping").Visible = True
    Else
        Sheets("Shop Vac Media Port Assembly").Visible = False
        Sheets("Shop Vac Assembly").Visible = False
        Sheets("Shop Vac Piping").Visible = False
    End If
End If
End Sub

这只适用于一个下拉列表,我目前有(7)下拉列表,每个列表中有不同的选项。我如何为每个人做这项工作。

1 个答案:

答案 0 :(得分:0)

您只需要根据Target单元格地址添加更多逻辑。以下代码段将处理您的范围"Media_System"和另一个范围。要添加与更多下拉列表相对应的更多范围,只需复制&修改If Target.Address...块并根据需要重复。

If Target.Address = Me.Range("Media_System").Address Then
    If Target.Value = "Shop Vac" Then
        Sheets("Shop Vac Media Port Assembly").Visible = True
        Sheets("Shop Vac Assembly").Visible = True
        Sheets("Shop Vac Piping").Visible = True
    Else
        Sheets("Shop Vac Media Port Assembly").Visible = False
        Sheets("Shop Vac Assembly").Visible = False
        Sheets("Shop Vac Piping").Visible = False
    End If
End If
'MODIFY & REPEAT AS NEEDED
If Target.Address = Me.Range("SOME_OTHER_RANGE").Address Then
    If Target.Value = "Some other thing" Then
        Sheets("foo").Visible = True
        Sheets("bar").Visible = True
        Sheets("boo").Visible = True
    Else
        Sheets("foo").Visible = False
        Sheets("bar").Visible = False
        Sheets("boo").Visible = False
    End If
End If