【问题标题】:Hiding and showing multiple columns in Excel based on the value of a cell根据单元格的值在 Excel 中隐藏和显示多列
【发布时间】:2016-06-30 14:30:33
【问题描述】:

我正在尝试根据某个单元格中的值将列隐藏在工作表中。该值的范围可以是不同的名称选项,并且为每个可能的选项隐藏不同的列。我有以下代码,但它似乎并不总是有效,然后有时它只隐藏范围内的一些列,但不是全部(比如如果 Abandonnée 在单元格 F7 中,那么有时 H 列会隐藏我不会被隐藏)。如果有人有任何想法,我将不胜感激。谢谢!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
If Range("F7").Value = "Abandonnée" Then  
    Columns("G").EntireColumn.Hidden = False  
Else  
    Columns("G").EntireColumn.Hidden = True  
End If  

If Range("F7").Value = "Abandonnée" Then  
    Columns("H:I").EntireColumn.Hidden = True  
Else  
    Columns("H:I").EntireColumn.Hidden = False  
End If  

If Range("F7").Value = "Référé au spécialiste" Then  
    Columns("G").EntireColumn.Hidden = True  
Else  
    Columns("G").EntireColumn.Hidden = False  
End If  

If Range("F7").Value = "Référé au spécialiste" Then  
    Columns("H").EntireColumn.Hidden = False  
Else  
    Columns("H").EntireColumn.Hidden = True  
End If 

If Range("F7").Value = "Référé au spécialiste" Then  
    Columns("I").EntireColumn.Hidden = True  
Else  
    Columns("I").EntireColumn.Hidden = False  
End If  

If Range("F7").Value = "En force" Then  
    Columns("G").EntireColumn.Hidden = True  
Else  
    Columns("G").EntireColumn.Hidden = False  
End If  

If Range("F7").Value = "En attente d'information" Then  
    Columns("G").EntireColumn.Hidden = True  
Else  
    Columns("G").EntireColumn.Hidden = False  
End If  

If Range("F7").Value = "En cours" Then  
    Columns("G").EntireColumn.Hidden = True  
Else  
    Columns("G").EntireColumn.Hidden = False  
End If 

If Range("F7").Value = "Refusé par l'assureur" Then  
    Columns("G").EntireColumn.Hidden = True  
Else  
    Columns("G").EntireColumn.Hidden = False  
End If  

End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    两件事:

    1. 首先取消隐藏所有列。

    2. 然后使用 Select Case 遍历条件,隐藏需要隐藏的内容。

    像这样,你需要输入其他条件:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Columns("G:I").Hidden = False
    Select Case Range("F7")
        Case "Abandonnée"
            Columns("H:I").Hidden = True
        Case "Référé au spécialiste"
            Columns("G").EntireColumn.Hidden = True
            Columns("I").EntireColumn.Hidden = True
        Case "En force"
            Columns("G").EntireColumn.Hidden = True
        'Continue with all your tests
    End Select
    
    
    End Sub
    

    如果您有触发隐藏相同列的单词,您可以像您的 Case 语句一样执行此操作:

    Case "En force","Abandonnée"
         '...
    

    然后当 F7 是这两个中的一个时,它将执行以下操作。

    【讨论】:

    • 谢谢,现在可以了。当我尝试使用相同的代码但在同一张纸上使用不同的范围(即用单元格 F10 替换单元格 F7)时,我遇到了另一个问题。有没有办法让列可以自动显示或隐藏,而不是通过选择@Scott
    • 不确定我是否理解你的问题,它可能更适合作为自己的问题,你可以举个例子。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2015-01-17
    • 2016-01-11
    相关资源
    最近更新 更多