2016-06-30 27 views
0

我想根据某个单元格中的值将列隐藏在工作表中。该值可以从不同的名称选项变化,并且对于每个可能的选项隐藏不同的列。我有下面的代码,但它似乎并不一直工作,然后有时它只隐藏范围内的一些列,但不是全部(如果Abandonnée在单元格F7中,那么有时列H将隐藏我不会被隐藏)。如果有人有任何想法,我会很感激帮助。谢谢!基于单元格的值在Excel中隐藏和显示多列

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 

回答

2

两件事情:

  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是这两个中的任何一个时,它将执行下面的操作。

+0

谢谢,它现在有效。当我尝试使用相同的代码,但是在同一张纸上的不同范围(即用单元格F10替换单元格F7)时遇到了另一个问题。有没有办法让列可以自动出现或隐藏,而不是通过选择来改变@Scott – Ben

+0

不知道我理解你的问题,它可能更适合作为自己的问题,你可以给出例子。 –

相关问题