[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.