2011-12-22 92 views
1

我有两个代码,下面是一个隐藏和另一个取消隐藏行的基础上其中包含值等于零的总和。但是,这段代码还隐藏了我不想要的空行,因为它们是段之间的间隔符。任何建议都会被赞赏,如果有改进现有代码的建议,我也会很感激。如果SUM内容=零并跳过空白,我该如何隐藏Excel行?

Sub HideRows() 

Dim R As Long 
Dim Rng As Range 

    If Selection.Rows.Count > 1 Then 
     Set Rng = Selection 
    Else 
     Set Rng = ActiveSheet.UsedRange 
    End If 

    For R = 1 To Rng.Rows.Count 
     If Application.Sum(Range(Rng(R, 3), Rng(R, Rng.Columns.Count))) = 0# Then 
     Rng.Rows(R).Hidden = True 
     End If 
    Next R 

End Sub 
Sub UnHideRows() 

Dim R As Long 
Dim Rng As Range 

    If Selection.Rows.Count > 1 Then 
     Set Rng = Selection 
    Else 
     Set Rng = ActiveSheet.UsedRange 
    End If 

    For R = 1 To Rng.Rows.Count 
     If Application.Sum(Range(Rng(R, 3), Rng(R, Rng.Columns.Count))) = 0# Then 
     Rng.Rows(R).Hidden = False 
     End If 
    Next R 

End Sub 
+1

如果您的代码速度是一个问题,那么使用返回True或False的“工作列”会比使用自动筛选器(手动或使用VBA)隐藏行更快。 – brettdj 2011-12-23 00:08:51

回答

4

替换了与此每个方法循环....

myRange = Range(Rng(R, 3), Rng(R, Rng.Columns.Count)) 
For R = 1 To Rng.Rows.Count 
    If Application.CountBlank(myRange) <> myRange.Cells.Count Then 
    If Application.Sum(myRange) = 0# Then 
     Rng.Rows(R).Hidden = True 
    End If 
Next R 

它首先检查以查看是否在该行范围内的所有细胞是空白并且如果为真基本上跳过进一步处理。

+0

这个技巧。谢谢! – ThaddeusTG 2011-12-23 13:40:28