【发布时间】:2014-10-24 05:38:45
【问题描述】:
我已经阅读了许多关于在 Excel 中隐藏行的帖子,它们都帮助我进行了隐藏,但我似乎仍然没有找到任何解决方案来解释为什么它不会 UNHIDE。
我正在使用以下代码:
Private Sub Worksheet_Calculate()
Dim LastRow As Long, c As Range
Application.EnableEvents = False
LastRow = Cells(Cells.Rows.Count, "D").End(xlUp).Row
On Error Resume Next
For Each c In Range("D116:D" & LastRow)
If c.Value = 0 Then
c.EntireRow.Hidden = True
ElseIf c.Value > 0 Then
c.EntireRow.Hidden = False
End If
Next
On Error GoTo 0
Application.EnableEvents = True
End Sub
如果我从一些 1 和一些 0 值开始,那么代码成功地隐藏了值为 0 的行,并且还继续处于活动状态,确保我以后从 1 更改为 0 的任何值都被自动隐藏。
但是,最初为 0 的值一旦更改为 1,将不会自动取消隐藏。这是一个大问题,因为我打算从所有零值开始,然后在这些值更改为 1 或大于 1 时取消隐藏行。值得注意的是,D 列中的这些值是对同一电子表格中其他位置的引用(例如 =N100),这样即使在隐藏行的情况下我也可以控制这些值。我不认为使用公式是个问题,因为它仍然可以响应 HIDE 的动态变化(从 1 更改为 0 时),而不是 UNHIDE。
有什么建议吗?
【问题讨论】:
-
However, the values that were initially 0, once changed to 1, will not UNHIDE automatically.- 用ElseIf c.Value >= 1 Then替换ElseIf c.Value > 1 Then -
或者只是删除“elseif”并使用“else”..如果你只有零或一个,那么你不需要elseif..
-
谢谢你们,正确的代码确实是“if > 0”,因为我可以有从 0 到 5 的值,并且只有值 =0 时才应该隐藏行。问题依然存在....