我需要有关此代码的帮助。现在它只在所有列J中搜索,但我希望它也在所有列K中搜索,以执行以下操作。例如,
如果
J6 = 0然后隐藏行
J6 = 1取消隐藏行
K6 = 1然后隐藏行
(列J是如果作业被发布用于制造,列K是作业是否被运送给客户)
总结如果K6 = 1我想要隐藏行无论如何,但如果K6 = 0我想要它寻找J6。请参阅下面我从其他来源获得的代码(点击here)它有效,我只需要一个选项。
Private Sub Worksheet_Calculate()
Dim LastRow As Long, c As Range
Application.EnableEvents = False
LastRow = Cells(Cells.Rows.Count, "E").End(xlUp).Row
On Error Resume Next
For Each c In Range("J6:J" & LastRow)
If c.Value = 0 Then
c.EntireRow.Hidden = True
ElseIf c.Value = 1 Then
c.EntireRow.Hidden = False
End If
Next
On Error GoTo 0
Application.EnableEvents = True
End Sub
答案 0 :(得分:1)
使用Or
If c.Value = 0 or c.offset(0,1) = 1 Then
你也可以流线并删除If。
另一个注意事项如果您在列J或列K中没有错误,则不需要使用On Error Resume Next
。只有在没有其他形式的错误控制可用时,才应谨慎使用。它将隐藏需要正确处理的错误。
我把它留在了外壳里。但大多数时候你想知道代码错误的时间并没有掩盖它。
Private Sub Worksheet_Calculate()
Dim LastRow As Long, c As Range
Application.EnableEvents = False
LastRow = Cells(Cells.Rows.Count, "E").End(xlUp).Row
On Error Resume Next
For Each c In Range("J6:J" & LastRow)
c.EntireRow.Hidden = cBool(c.Value = 0 or c.offset(0,1) = 1)
Next
On Error GoTo 0
Application.EnableEvents = True
End Sub