自动隐藏基于DV下拉菜单的行 – Excel VBA
我想知道如果有人对此有任何想法,我觉得有什么东西正在我的脑海中,因为我相信这应该工作…
我有一个数据validation下拉菜单单元格A11包含(select属性,酒店,旅馆,小屋)
我将22:52行定义为“RLHotel”,53:85行定义为“RLHostel”,86:115行定义为“RLCabin”。 基本上,我试图给用户select他们试图填写房间列表的什么types的属性。
如果他们在下拉菜单中select“酒店”,我想要旅馆/小屋隐藏。 如果他们'旅馆',我想要酒店/小屋隐藏等。
我在VBA中用于这个特定工作表的代码是:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A11")) Is Nothing Then With Range("$A$11") Range("RLHotel, RLCabin").EntireRow.Hidden = .Value = "Hostel" Range("RLHostel, RLCabin").EntireRow.Hidden = .Value = "Hotel" Range("RLHostel, RLHotel").EntireRow.Hidden = .Value = "Cabin" End With End If End Sub
目前,如果我select“酒店”,只有“小屋”行隐藏。 如果我select“旅馆”,所有行都显示。 如果我select“小屋”,旅馆和旅馆行掩藏他们应该。
有人有主意吗? 将不胜感激,一直在寻找这个永远! 谢谢!
试试这个,我想你试图在两个不连续的范围(例如, Range("RLHotel", "RLHostel")
上操作,只要在布尔expression式中将操作符翻转到<>
并设置Hidden
属性对于每种types的财产如此:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A11")) Is Nothing Then With Range("$A$11") Range("RLHotel").EntireRow.Hidden = .Value <> "Hotel" Range("RLHostel").EntireRow.Hidden = .Value <> "Hostel" Range("RLCabin").EntireRow.Hidden = .Value <> "Cabin" End With End If End Sub
如果A11(通过公式)链接到另一个工作表上的单元格,则不使用_Change
事件使用_Calculate
事件:
Private Sub Worksheet_Calculate() With Range("$A$11") Range("RLHotel").EntireRow.Hidden = .Value <> "Hotel" Range("RLHostel").EntireRow.Hidden = .Value <> "Hostel" Range("RLCabin").EntireRow.Hidden = .Value <> "Cabin" End With End Sub
这是对答案的评论。 这是最终的解决scheme,使其在每个选项卡上更新,所以我可以build立更多,它会自动填充。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Application.Volatile With Sheet4.Range("$A$11") Sheet4.Range("RLHotel").EntireRow.Hidden = .Value <> "Hotel" Sheet4.Range("RLHostel").EntireRow.Hidden = .Value <> "Hostel" Sheet4.Range("RLCabin").EntireRow.Hidden = .Value <> "Cabin" End With With Sheet12.Range("$A$11") Sheet12.Range("RLHotel").EntireRow.Hidden = .Value <> "Hotel" Sheet12.Range("RLHostel").EntireRow.Hidden = .Value <> "Hostel" Sheet12.Range("RLCabin").EntireRow.Hidden = .Value <> "Cabin" End With End Sub