2016-06-30 59 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

不知道我理解你的問題,它可能更適合作爲自己的問題,你可以給出例子。 –

相關問題