【问题标题】:VBA - Hide rows based on values in multiple ColumnsVBA - 根据多列中的值隐藏行
【发布时间】:2017-06-14 01:39:09
【问题描述】:

我正在尝试我的第一个代码和 VBA,并且已经研究了一段时间,但我无法让它工作。我试图隐藏多列值为 0(具有公式/数值的那些)或留空(文本)的行。在我的 Excel 中,第 9-1000 行的 O、AB、AN 列包含数值以及 AJ 和 AK 9-1000 文本值。所以我想隐藏所有 O、AB 和 AN 为零且 AJ 和 AK 为空白的那些。我可以编写基于第一个条件隐藏行的基本代码:

Sub HideAccounts()

Dim TotExp As Range
Dim Cell As Range

Set TotExp = Range("O9:O1000")

Application.ScreenUpdating = False

For Each Cell In TotExp.Rows
If Cell.Value = 0 Then
Cell.EntireRow.Hidden = True
Else
Cell.EntireRow.Hidden = False

End If

Application.ScreenUpdating = True

Next Cell

End Sub

所以现在我想添加其他条件,但我正在努力处理多个条件,当我尝试插入 GoTo 语句时它也不起作用......

非常感谢任何帮助!

谢谢, 丹妮拉

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这是包含多个条件的一种方法:

    Option Explicit
    
    Public Sub HideAccounts()
        Dim i As Long, hide As Boolean
    
        Application.ScreenUpdating = False
        With ThisWorkbook.Sheets(1)         '<-- set this to the relevant sheet
            For i = 9 To 1000
                hide = (.Range("O" & i).Value2 = 0)
                hide = hide And (.Range("AB" & i).Value2 = 0)
                hide = hide And (.Range("AN" & i).Value2 = 0)
                hide = hide And (Len(.Range("AJ" & i).Value2) = 0)
                hide = hide And (Len(.Range("AK" & i).Value2) = 0)
                .Rows(i).EntireRow.Hidden = hide
            Next
        End With
        Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 查看您的答案。这不是 OP 想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多