【问题标题】:Check three cells in one row and unhide the row if one cell has specific text检查一行中的三个单元格,如果一个单元格包含特定文本,则取消隐藏该行
【发布时间】:2020-12-08 17:49:17
【问题描述】:

我有一个隐藏第 17-111 行的电子表格。数据将添加到每行的三个单元格(P、Q 和 R 列)。

数据来自用户表单,用户可以在其中选择三个选项按钮。根据选项,“通过”、“失败”或“NA”的结果将填充到 P17-R111 范围内的每个单元格中。

我需要取消隐藏“失败”在该行的任何 P、Q 或 R 列单元格中的所有行。
例如如果单元格 R57 为“失败”且单元格 P66 为“失败”,则需要取消隐藏第 57 行和第 66 行。

我尝试了在网上找到的代码变体,但我得到的结果是,只有在 P 列有“失败”的情况下,行才被隐藏,而不是 P 单元格没有失败,但同一行中的其他单元格没有失败。
例如如果单元格 P57 为“通过”,但单元格 R57 为失败,则该行保持隐藏状态。

这是我最近的(也是更简单的)尝试:

Private Sub CommandButton1_Click()
    Dim cel As Range
    Dim RangeToUnhide As Range

    For Each cel In Worksheets("Sheet1").Range("P17:R111")
        If cel = "Fail" Then
            If RangeToUnhide Is Nothing Then
                Set RangeToUnhide = cel
            Else
                Set RangeToUnhide = Union(RangeToUnhide, cel)
            End If
        End If
    Next
    RangeToUnhide.EntireRow.Hidden = False    

End Sub

我尝试将范围更改为 ("P17:P111"),然后为 Q 和 R 中的范围运行代码的另外两个副本。我得到的只是取消隐藏 P 单元格为“失败”的行, Q 和 R 单元格被忽略。

【问题讨论】:

  • 我无法复制它。您确定单元格包含“失败”且没有任何尾随空格并且始终为大写 F?另外,请养成缩进代码的习惯,以使其更具可读性。
  • Rookie 错误...是的,创建主电子表格的人在公式中失败前面有一个空白单元格,我没有注意到。!!!非常感谢您的帮助。

标签: excel vba


【解决方案1】:

使用此代码

Sub Hide()
Dim cel As Range
Dim RangeToUnhide As Range

For Each cel In Worksheets("Sheet1").Range("A7:B11")
'Change Name of Sheet & Range as per your use
If cel = "A" Then
'Change Value as per your use
If RangeToUnhide Is Nothing Then
Set RangeToUnhide = cel
Else
Set RangeToUnhide = Union(RangeToUnhide, cel)
End If
End If
Next
RangeToUnhide.EntireRow.Hidden = True


End Sub

【讨论】:

  • 你应该edit你的答案添加一个minimal reproducible example来证明问题。
  • 感谢回答,但代码不起作用;它实际上隐藏了行。
  • 然后把真改成假
  • Sub UnHide() Dim cel As Range Dim RangeToUnhide As Range For Each cel In Worksheets("Sheet1").Range("A7:B11") '根据您的使用更改工作表和范围的名称If cel = "A" Then '根据您的使用更改值 If RangeToUnhide Is Nothing Then Set RangeToUnhide = cel Else Set RangeToUnhide = Union(RangeToUnhide, cel) End If End If Next RangeToUnhide.EntireRow.Hidden = False End Sub}跨度>
【解决方案2】:

上面的代码是用来隐藏的,用这个来取消隐藏

Sub Unhide()
Dim cel As Range
Dim RangeToUnhide As Range
For Each cel In Worksheets("Sheet1").Range("A7:B11")
'Change Name of Sheet & Range as per your use
If cel = "A" Then
'Change Value as per your use
If RangeToUnhide Is Nothing Then
Set RangeToUnhide = cel
Else
Set RangeToUnhide = Union(RangeToUnhide, cel)
    End If
End If
Next
RangeToUnhide.EntireRow.Hidden = False


End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    相关资源
    最近更新 更多