如何在Excel中的每个工作表中隐藏零行
我想隐藏B列和C列中的零值行。我的代码可以工作,但只能在活动工作表上工作。我希望它在工作簿中的所有工作表中循环。谢谢你的帮助如何在Excel中的每个工作表中隐藏零行,excel,for-loop,foreach,show-hide,vba,Excel,For Loop,Foreach,Show Hide,Vba,我想隐藏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
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
激活工作表。问题是范围正在从当前活动工作表中移出。如果您使用ws。输入范围或激活工作表,如下所示
For Each ws In ActiveWorkbook.Worksheets
加
我发现这是关于这个主题的,我希望它有帮助:
您需要将范围指定为工作表的成员,如下所示:
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
1.
在整个工作簿的两列中隐藏零值行的目的是什么<代码>2。工作簿中有多少页<代码>3。您使用的Excel版本是什么?欢迎使用堆栈溢出!我开始评论,然后意识到我误解了你的意图。bonCodigo提出了很好的问题。这将杀死工作簿…遍历整个工作簿中的每个单元格…漫长的旅程…使用.Activate
方法通常是不好的做法。有很多更快的方法来完成一项涉及.Activate
@Brad的任务,这取决于开发人员。因此,我还说他可以添加ws-workbook对象来引用范围。也许,但是。选择
和。激活
几乎可以保证,与不主动改变光标位置的等效方法相比,您的程序运行速度要慢得多。即使关闭了应用程序。屏幕更新
。你是对的,这取决于开发人员,但真的…为什么?他们想使用的是开发人员的选择,为什么…因为他们编写的不是你。你所能做的就是给他们提供信息,让他们决定什么最适合他们的项目。将ws添加到范围中效果很好,程序运行很快。谢谢你的帮助
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
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