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
我有一个代码序列,如果 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