需要帮助根据单元格中的值隐藏/显示 Excel 行,但允许稍后移动行

需要帮助根据单元格中的值隐藏/显示 Excel 行,但允许稍后移动行

在第 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

相关内容