【发布时间】:2011-12-29 15:36:08
【问题描述】:
根据我提出的上一个问题,我试图隐藏包含零的行,但跳过包含任何一个或多个单元格中的任何文本的行。我以前跳过空白行得到了很好的帮助,现在希望得到更多帮助。我在互联网上搜索了我能找到的每个论坛,但没有找到任何我需要的东西。该隐藏有两个代码和该代码的精确副本,但隐藏设置为 false。这是隐藏的那个。
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
Set myRange = Range(Rng(R, 2), Rng(R, Rng.Columns.Count))
If Application.CountBlank(myRange) <> myRange.Cells.Count And IsNumeric(myRange(Row)) = False Then
If Application.Sum(myRange) = 0 Then
Rng.Rows(R).Hidden = True
End If
End If
Next R
End Sub
顺便说一句,我知道IsNumeric(myRange(Row)) = False 确实应该是= True,但由于某种原因,在我的一个工作表上,此设置有效,如果我更改为 True,它几乎没有任何作用。
在此先感谢您的帮助。
【问题讨论】:
-
你不要说这段代码有什么问题。它是否隐藏了不应该隐藏的行?它不隐藏它应该隐藏的行吗?为什么
Set myRange ...从第 2 列开始? -
尽可能避免范围循环,它们会严重浪费代码运行时间。而是使用一个简单的工作列(手动或使用 VBA),然后使用
AutoFilter它。但根据托尼的评论,您的确切问题可能会更清楚 -
对不起,是的,它隐藏了带有文本的行,这些行是工作表上相应部分的标题。我注意到由于循环需要时间,但是这些应用的区域不是很大,并且与工作表中公式的处理时间相比,这没什么。谢谢你的提示。