If 语句 hide/show 行 Excel VBA

If statement to hide/show rows in Excel VBA

我有一个代码序列,如果 C37 为空,我想隐藏两个系列的行。我的代码为此成功运行。

然而,

如果 D37 不是空白,我希望取消隐藏同一系列的行。

'Show/Hide Filter Index Columns

If Worksheets("Req Sheet").Range("C37").Value = "" Then
   Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = True
   Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = True
Else
    Rows("54:57").EntireRow.Hidden = False
    Rows("125:128").EntireRow.Hidden = False

End If

If Worksheets("Req Sheet").Range("C38").Value = "" Then
   Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = True
   Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = True
Else
    Rows("54:57").EntireRow.Hidden = False
    Rows("125:128").EntireRow.Hidden = False

End If

我知道我的代码语法有误,但我遇到的问题是 C38 的第二部分代码将取代 C37 的代码。

我尝试过使用 and 运算符,但我无法成功!

感谢您的帮助!

With Worksheets("Req Sheet")

    If .Range("C37").Value <> "" Or .Range("C38").Value <> "" Then
        Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = False
        Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = False
    Else
        Worksheets("Formulation").Rows("54:57").EntireRow.Hidden = True
        Worksheets("Formulation").Rows("125:128").EntireRow.Hidden = True

        Rows("54:57").EntireRow.Hidden = False
        Rows("125:128").EntireRow.Hidden = False
    End If

End With

如果 C37 为空而 D37 有数据,此代码将隐藏行。
如果 C37 有数据而 D37 为空,它将取消隐藏行。
任何其他条件将取消隐藏行。

Sub Test()

    Dim rng As Range

    With ThisWorkbook
        Set rng = Union(.Worksheets("Formulation").Rows("54:57"), _
                        .Worksheets("Formulation").Rows("128:128"))

        With .Worksheets("Req Sheet")
            rng.EntireRow.Hidden = (.Range("C37") <> "" And .Range("D37") = "")
        End With

    End With

End Sub