使用工作表时,隐藏包含当前不希望显示的数据的行并不罕见。如果您编写了一个宏来处理工作表中的数据,则您可能想知道如何跳过而不处理已标记为隐藏的行。

完成此操作的方法是检查每一行的Hidden属性。

如果该属性为True,则该行被隐藏;否则,该行将被隐藏。如果为False,则可见行。

作为其工作方式的一个示例,假设您有一个用于跟踪客户端的工作表。其中一些客户端被认为是活动的,而其他客户端则被认为是非活动的。要将客户端标记为非活动状态,请隐藏包含该客户端的行。在某些时候,您要为活动的客户端编号,并想要使用宏进行操作。以下宏将为您解决问题:

Sub NumberClients()

Dim c As Range     Dim j As Integer

If Selection.Columns.Count > 1 Then         MsgBox "Only select the cells you want numbered"

Exit Sub     End If

j = 0     For Each c In Selection         If Not c.Rows.Hidden Then             j = j + 1             c.Value = j         Else             c.Clear         End If     Next c End Sub

要使用宏,只需选择要在其中进行编号的单元格。首先,宏将检查以确保您仅在单个列中选择了单元格。然后,它逐步遍历选定范围内的每个单元格。如果包含单元格的行未被隐藏,则计数器(j)递增并存储在单元格中。如果包含该单元格的行被隐藏,则该单元格的内容将被清除。该宏的关键是If …​ End If结构,用于测试Hidden属性的值。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2286)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: