隐藏具有多个下拉列表的列

时间:2018-03-15 12:44:59

标签: excel excel-vba drop-down-menu vba

我是excel宏的新手,我想帮助隐藏一些列, 我在A2和A3中有2个下拉列表,两者都有是或否的选项。如果在A2中的下拉列表中选择了No选项,则如何隐藏C列,如果为A3中的下拉列表选择No选项,D列将消失。然后如果为两个下拉选择了是,则重新出现列。

2 个答案:

答案 0 :(得分:2)

您必须使用活动。有关如何创建它们的简要教程,请访问:http://www.excel-easy.com/vba/events.html

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

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

答案 1 :(得分:0)

在工作表的代码表中尝试使用Worksheet_Change事件子过程。

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中的“下拉列表”是数据验证列表。