基于第一个和最后一个单元格的值隐藏行

时间:2014-09-18 11:03:38

标签: excel vba excel-vba

我有一个工作簿,其中包含许多表示项目的工作表,这些工作表中有许多选项可用于标记这些项目的属性。还有一个中央表格,总结了项目'属性。

例如,可以说我们有两张纸,一张叫做Cat,另一张叫做Dog。如果您填写了相关选项,它将显示在摘要表中(如果您可以想象每行在Excel中是一行):



名称:Squiggles


颜色:黑色


腿:4



名称:低音单元


颜色:白色


腿:4


目前您可以使用'项目选择'打开一些复选框的工作表,以选择最终摘要中显示的项目。对于上面的例子,猫和狗都会被勾选,如果没有,它将不会出现在最终的总结中。

此时此操作会隐藏Cat摘要显示的确切行。这意味着如果您在其上方添加任何其他行,则VBA代码将不会更改,并且会隐藏错误的行。

If CatCheckBox.Value = True Then
    'Unhide the rows that the Cat summary is on
    Sheets("Final Summary").Range("A3:A32").EntireRow.Hidden = False
Else
    'Hide the rows that the Cat summary is on
    Sheets("Final Summary").Range("A3:A32").EntireRow.Hidden = True
End If

我希望VBA代码动态隐藏Cat摘要。我想到的想法是找到价值' Cat'在表格和另一个值中说“终结”'并隐藏它们的行和它们之间的行。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

查看命名范围。您可以命名单元格范围(使用公式 - >名称管理器)

例如你可以: 将第2行命名为CAT 将行6到9命名为DOG 将行10到13命名为COW 将第14至17行命名为HAMSTER

现在,第1行上的任何插入都会强制范围自动重新编号。假设您在第2行之前插入5行.CAT现在(自动)第7行到第10行,DOG为11到14。

您可以使用

在代码中引用这些内容
Sheets("Final Summary").Range("CAT").EntireRow.hidden = false 

请注意,无保护的细胞范围存在风险。您可以在上述范围的中间插入一行,它会扩展范围。例如如果CAT是第2行到第5行,则在第3行插入一行会使CAT范围现在为2到6.