2013-10-22 01:45:14 +0000 2013-10-22 01:45:14 +0000
2
2

基于单元格值隐藏或取消隐藏行的VBA代码。

这是我的代码,但它并没有真正做任何事情,我没有看到它有什么问题。

Private Sub PG1(ByVal Target As Range)
    If .Range("E50").Value = "Passed" Then
        Rows("51").EntireRow.Hidden = True
    End If
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51").EntireRow.Hidden = True
    End If
End Sub

我的意图是,当前一行的特定单元格从下拉菜单中设置为 “通过 "时,下面的一行就会出现,如果是 "失败",则会被隐藏。

答案 (3)

9
9
9
2013-10-22 02:24:58 +0000

看起来你的代码有一些错别字。你需要的是这样的代码。

Sub PG1()

    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False
    End If

End Sub

要想让行的隐藏/取消隐藏在你改变工作表时更新,把它放在Worksheet_Change事件中。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False

    End If
End Sub
1
1
1
2015-08-06 21:24:01 +0000

没有错别字。"rows(51) “是有效的.但你不需要用 "entirerow "修饰符

rows(n).hidden=true ; where n is an valid row number

来隐藏多行

range(rows(n1),rows(n2)).hidden=true ; will hide rows n1 though n2
```。
-1
-1
-1
2015-03-27 15:33:16 +0000
Private Sub PG1()
    Range("$E$51").EntireRow.Hidden = (Range("$E$50").Value = "Passed")
End Sub