【问题标题】:If statement to hide/show rows in Excel VBA如果语句在 Excel VBA 中隐藏/显示行
【发布时间】:2016-09-13 08:46:52
【问题描述】:

我有一个代码序列,如果 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 运算符,但没有成功!

感谢您的帮助!

【问题讨论】:

  • 如果 C37 和 C38 都为空,是否要隐藏行?
  • 你想在你的帖子中测试D37 吗?或 C38 在您的代码中?

标签: excel vba hidden


【解决方案1】:
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 有数据,这现在可以工作,但如果 C38 有数据并且 C37 为空白,则这些行仍然隐藏!
  • 这是你想要的吗?笔记; Rows("54:57")Rows("125:128") 永远不会被隐藏。
【解决方案2】:

如果 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

【讨论】:

  • 嗨,使用该代码,它对 D37 可以正常工作,但如果 C37 中有数据,它会被隐藏。此外,如果两者都是空白的,它们应该被隐藏但行是可见的!
  • 是的,在理解您的请求时遇到问题:C37 是空白的,我想要隐藏两个系列的行,D37 不是空白的我想要取消隐藏同一系列的行。 这意味着如果 C37 或 D37 为空白,则您希望隐藏一系列行(如果 D37 不为空白,则未隐藏,因此如果为空白,则将其隐藏)。在你写代码之前你会说 C37 和 D37,但在你的代码之后是 C37 和 C38... 非常混乱。
猜你喜欢
  • 2011-10-24
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
相关资源
最近更新 更多