【问题标题】:VBA codes: hides but won't unhide rowsVBA 代码:隐藏但不会取消隐藏行
【发布时间】: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 时才应该隐藏行。问题依然存在....

标签: vba excel show-hide


【解决方案1】:

感谢所有帮助过的人。感谢广告的帮助,我创建了一个宏,并从该代码中得到了我缺少的行:激活。现在的代码如下:

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.Activate
        c.EntireRow.Hidden = False
    End If
Next
On Error GoTo 0
Application.EnableEvents = True
End Sub

【讨论】:

    【解决方案2】:

    我不确定如何在 VBA 中显示一行,你所拥有的显示一行看起来是正确的。但是当我不确定如何做某事时,我会录制一个宏来做我想要实现的目标,然后查看 excel 生成的代码。

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多