If语句在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的代码。

我曾尝试使用一个和运营商,但我无法取得成功!

谢谢你的帮助!

 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