VBA:根据对问题的是/否响应触发隐藏的行

问题描述 投票:0回答:2

我正在使用excel来创建调查问卷,我需要以一种方式对此调查问卷进行编程,如果某人在某个问题上回答“是”,则会触发子问题。这些子问题是隐藏的行,只有在该特定情况下用户回答“是”时才会出现。我有一个解决方案,但是非常繁琐,需要对每个单元进行编程

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$10" Then
    If Target.Value <> "Yes" Then Rows("5").EntireRow.Hidden = True
    If Target.Value = "Yes" Then Rows("5").EntireRow.Hidden = False
End If

我希望使用for循环遍历每个部分,如果答案为Yes,则触发行以显示下面的代码

For Each cell In Worksheets("Sheet").Range("C21:C32")
    If cell.Value = "Yes" Then
       'code here to show additional rows
        Rows("22").EntireRow.Hidden = False
        Rows("23").EntireRow.Hidden = False
    End If
Next cell

我的问题是不同的“是”响应需要触发不同的行,例如,如果第9行是“是”触发行10和11,并且在此之后如果10是肯定触发另一行子问题。我可以轻松地使用Worksheet_Change方法为每个cel修改它,但这非常繁琐。我有什么方法可以在for循环中做到这一点,以使代码更清洁?我最终会把这个传递给另一个人继续工作,我想确保给他们留下最有效的方法。

excel vba excel-vba
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.