Excel 使用多个下拉列表隐藏列

Excel 使用多个下拉列表隐藏列,excel,drop-down-menu,vba,Excel,Drop Down Menu,Vba,我是excel宏新手,我想了解一些隐藏某些列的帮助, 我在A2和A3中有两个下拉列表,都有是或否选项。如果A2中的下拉列表中选择了否选项,我如何使C列隐藏,如果A3中的下拉列表中选择了否选项,如何使D列消失。然后,如果两个下拉列表都选择了“是”,则会重新显示列。请尝试工作表代码表中的“工作表更改事件”子过程 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Targe

我是excel宏新手,我想了解一些隐藏某些列的帮助,
我在A2和A3中有两个下拉列表,都有是或否选项。如果A2中的下拉列表中选择了否选项,我如何使C列隐藏,如果A3中的下拉列表中选择了否选项,如何使D列消失。然后,如果两个下拉列表都选择了“是”,则会重新显示列。

请尝试工作表代码表中的“工作表更改事件”子过程

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:A3")) Is Nothing Then
        On Error GoTo meh
        Application.EnableEvents = False
        columns(3).entirecolumn.hidden = cbool(lcase(Range("A2").value) = "no")
        columns(4).entirecolumn.hidden = cbool(lcase(Range("A3").value) = "no")
    End If

meh:
    Application.EnableEvents = True
End Sub

我假设A2:A3中的“下拉列表”是数据验证列表。

您必须使用事件。有关如何创建它们的简短教程,请访问:

在下面的示例中,我使用了
工作表\u calculate
事件,每次计算工作表时都会触发该事件。如果是/否下拉列表更改不会触发计算,您可以选择使用
工作表\u selection change

Private Sub Worksheet_Calculate()

If ActiveSheet.Range("A2").Value = "Yes" Then
    Columns(3).Hidden = False
    ElseIf ActiveSheet.Range("A2").Value = "No" Then
        Columns(3).Hidden = True
End If

If ActiveSheet.Range("A3").Value = "Yes" Then
    Columns(4).Hidden = False
    ElseIf ActiveSheet.Range("A3").Value = "No" Then
        Columns(4).Hidden = True
End If

End Sub

非常感谢,你的是/否隐藏/非隐藏逻辑可能会颠倒。”如果选择了“否”选项,则隐藏C列“True!”!很抱歉。刚刚编辑过。