我想知道是否有人对此有任何想法,我觉得有些事情已经过去了,因为我相信这应该有用......
我在单元格A11上有一个数据验证下拉菜单,包含(选择属性,酒店,宿舍,小屋)
我已将第22:52行的名称定义为“RLHotel”,第53:85行为“RLHostel”,第86:115行为“RLCabin”。基本上我正试图让用户选择他们试图填写房屋清单的房产类型。
如果他们在下拉菜单中选择“酒店”,我希望Hostel / Cabin隐藏。如果他们'旅馆',我希望酒店/小屋隐藏等等。
我在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
目前,如果我选择“酒店”,则只会隐藏“小屋”行。如果我选择“旅馆”,则显示所有行。如果我选择'Cabin',那么宿舍和酒店的行就会隐藏起来。
有人有什么想法吗?非常感谢,一直在寻找这个!谢谢!
答案 0 :(得分:2)
试试这个,我认为你试图在两个不连续的范围上操作(例如,Range("RLHotel", "RLHostel")
来过度思考它。只需将布尔表达式中的运算符翻转为<>
并设置{因此,每种类型的财产的{1}}属性:
Hidden
如果A11链接(按公式)到另一个工作表上的单元格,则不使用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
事件而是使用_Change
事件:
_Calculate
答案 1 :(得分:0)
这是关于答案的评论。这是最终解决方案,使其在每个选项卡上更新,以便我可以构建更多,它将自动填充。
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