【问题标题】:How can I hide zero rows in every worksheet in Excel如何在 Excel 的每个工作表中隐藏零行
【发布时间】:2013-01-17 06:00:29
【问题描述】:

我想隐藏 B 列和 C 列中值为零的行。我的代码有效,但仅在活动工作表上有效。我希望它遍历工作簿中的所有工作表。任何帮助表示赞赏

Private Sub CommandButton1_Click()
Dim M As Long, LastRow As Long
Dim ws As worksheet

For Each ws In ActiveWorkbook.Worksheets
LastRow = ws.Range("E65536").End(xlUp).Row
For M = LastRow To 7 Step -1
If Range("B" & M).Value = 0 And Range("C" & M).Value = 0 Then
Range("B" & M).EntireRow.Hidden = True
End If
Next M
Next ws
End Sub

【问题讨论】:

  • 1.在整个工作簿的两列中隐藏零值行的目的是什么? 2.你的工作簿有多少张? 3.你用的是什么版本的Excel?
  • 欢迎来到 Stack Overflow!我开始发表评论,然后意识到我误读了你想要做的事情。 bonCodigo 提出了很好的问题。

标签: excel for-loop foreach show-hide vba


【解决方案1】:

激活工作表。问题是 Range 正在处理当前的活动工作表。如果你使用 ws.超出范围或激活如下工作表。

For Each ws In ActiveWorkbook.Worksheets

添加

ws.Activate

【讨论】:

  • 使用.Activate 方法通常是不好的做法。有更快的方法来完成涉及.Activate 的任务。
  • @Brad 一如既往地由开发人员决定。因此,为什么我还说他可以添加 ws 工作簿对象来引用范围。
  • 也许可以,但.Select.Activate 几乎可以保证您的程序比不主动更改光标位置的等效方法要慢得多。即使Application.Screenupdating 关闭。你说得对,这取决于开发人员,但真的……为什么?
  • 这又是他们想要使用的开发人员的选择......为什么因为他们正在编码而不是你。您所能做的就是向他们提供信息,让他们决定什么最适合他们的项目。
  • 将 ws 添加到范围内效果很好,程序运行迅速。感谢您的帮助
【解决方案2】:

我发现了这个关于这个主题的信息,希望对你有帮助:ExtendOffice

Sub Hide_rows()
Dim LastRow As Long
Dim Rng As Range
LastRow = Range("A65536").End(xlUp).Row '
Set Rng = Range("A1:A" & LastRow) '
Application.ScreenUpdating = False
For Each cell In Rng
If cell.Value = "0" Then
cell.EntireRow.Hidden = True
End If
Next cell
Application.ScreenUpdating = True
End Sub

【讨论】:

  • 这将杀死工作簿......遍历整个工作簿中的每个单元格......漫长的旅程......
【解决方案3】:

您需要将 Range 指定为工作表的成员,如下所示:

Private Sub CommandButton1_Click()
   Dim M As Long, LastRow As Long
   Dim ws As worksheet

   For Each ws In ActiveWorkbook.Worksheets
       LastRow = ws.Range("E65536").End(xlUp).Row
       For M = LastRow To 7 Step -1
           ' Notice how 'ws' has been added before range
           If ws.Range("B" & M).Value = 0 And ws.Range("C" & M).Value = 0 Then
               ws.Range("B" & M).EntireRow.Hidden = True
           End If
       Next M
   Next ws
 End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多