2011-12-22 93 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