在第 4 行中我提出一个问题,D4 将包含“是”或“否”的答案。
如果 D4 中的答案为“是”,我希望隐藏的第 5 行和第 5 行与后续问题一起出现。这对我来说很有效:
If Range("D4").Value = "No" Then
Rows("5:6").EntireRow.Hidden = True
ElseIf Range("D4").Value = "Yes" Then
Rows("5:6").EntireRow.Hidden = False
在 AI 列中,将初始问题(例如第 4 行)标识为“分层问题”,将后续问题(例如第 5 行和第 6 行)标记为“后续问题”。
有没有办法做到这一点而不用手动更新每一行?另外,我需要允许添加/删除上面的行,这会影响哪些行将被隐藏/取消隐藏。谢谢。
答案1
我得到了朋友的帮助,想分享解决方案——如下。
当工作簿的第 4 列(即客户答案)发生任何更新时,如果他们对“分层问题”的回答为否...则后续带有“后续问题”的行将被隐藏。
如果您移动了业务标准(“A”)或客户答案列,则必须更新此宏。
这应该有效:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
If Target.Column = 4 Then
If Range("A" & Target.Row).Text = "Tiered Question" Then
i = 1
Do While Range("A" & Target.Row + i).Text = "Follow-Up Q"
Range("A" & Target.Row + i).EntireRow.Hidden = (Target.Value = "No")
i = i + 1
Loop
End If
End If
End Sub
答案2
我不确定你所说的“手动更新每一行”到底是什么意思,但如果你将代码放入工作表对象(而不是模块)的 Worksheet_Change 子中,那么它将在每次单元格中自动运行D4在该工作表中更新
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$4" Then
If Target.Value = "No" Then
Rows("5:6").EntireRow.Hidden = True
ElseIf Target.Value = "Yes" Then
Rows("5:6").EntireRow.Hidden = False
End If
End If
End Sub