根据两个不同的列中的文本单元格值隐藏行

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

我在第8列中隐藏了所有值为“ Kitchen”的行。

如果列12包含“否”,我还需要隐藏该行。这是一个“或”语句,而不是“与”语句。

我已经研究了该站点,但是找不到答案。我也想加快这个过程。

Sub FOHc()

    BeginRow = 6
    EndRow = 400
    ChkCol = 8

    For RowCnt = BeginRow To EndRow
        If Cells(RowCnt, ChkCol).Value = "Kitchen" Or Cells(RowCnt, ChkCol).Value = Blank Then
            Cells(RowCnt, ChkCol).EntireRow.Hidden = True

        Else
            Cells(RowCnt, ChkCol).EntireRow.Hidden = False

        End If
    Next RowCnt

End Sub

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9zWjBWUy5qcGcifQ==” alt =“电子表格”>

excel vba hide rows
2个回答
1
投票

您可以再添加一个Or条件

If Cells(RowCnt, ChkCol).Value = "Kitchen" Or Cells(RowCnt, ChkCol).Value = Blank Or Cells(RowCnt, ChkCol2).Value = "No" Then

为了加速宏,在开头添加Application.ScreenUpdating = False,在结尾添加Application.ScreenUpdating = True。在进行宏操作时,这将停止更新屏幕。


1
投票

要添加另一个逻辑测试,只需添加另一个Or语句。

为了加快速度,收集所有要隐藏在一个范围内的行,并一次性隐藏它们。

通常,使用适当的限定词也是一个好主意,语句Cells指Excel认为是活动工作表的内容。而ThisWorkbook.Worksheets("Sheet1").Cells始终引用名为“ Sheet1”的工作表。

声明所有变量可能会防止不良行为和错误,并且通常是一种好习惯。

这里是重构代码。

Sub FOHc()
    Dim beginRow As Long
    Dim endRow As Long
    Dim chkCol As Long
    Dim rowCnt As Long
    Dim rngResult As Range
    Dim ws As Worksheet

    beginRow = 6
    endRow = 400
    chkCol = 8

    Set ws = ThisWorkbook.Worksheets("Sheet1") 'Change this to the actual name of your sheet.

    With ws
        .Cells.EntireRow.Hidden = False 'Unhides all rows, remove line if that's not desired
        For rowCnt = beginRow To endRow
            If .Cells(rowCnt, chkCol) = "Kitchen" Or .Cells(rowCnt, chkCol) = Empty Or .Cells(rowCnt, 12) = "No" Then
                If rngResult Is Nothing Then
                    Set rngResult = .Cells(rowCnt, 1)
                Else
                    Set rngResult = Union(rngResult, .Cells(rowCnt, 1))
                End If
            End If
        Next rowCnt
    End With

    If Not rngResult Is Nothing Then rngResult.EntireRow.Hidden = True

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.